Ngày và thời gian trong lập trình có thể là một thách thức. Sự kiện đang diễn ra trong múi giờ nào? Định dạng ngày nào đang được sử dụng? Đó là use temp_db db.dates.insertMany[[ { name: "Created with `Date[]`", date: Date[], }, { name: "Created with `new Date[]`", date: new Date[], }, { name: "Created with `ISODate[]`", date: ISODate[], }, ]] use temp_db db.dates.insertMany[[ { name: "Created with `Date[]`", date: Date[], }, { name: "Created with `new Date[]`", date: new Date[], }, { name: "Created with `ISODate[]`", date: ISODate[], }, ]]
7 hay
8? Việc giải quyết theo tiêu chuẩn là rất quan trọng đối với việc lưu trữ dữ liệu và sau đó một lần nữa khi hiển thị ngày và giờ. Cách khuyến nghị để lưu trữ ngày trong MongoDB là sử dụng kiểu dữ liệu ngày BSON.
7 or
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
8? Settling on a standard is important for data storage and then again when displaying the date and time. The recommended way to store dates in MongoDB is to use the BSON Date data type.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Thông số kỹ thuật BSON đề cập đến loại
BSON Specification refers to the9 là DateTime UTC và là số nguyên 64 bit. Nó đại diện cho số mili giây kể từ thời đại Unix, đó là 00:00:00 UTC vào ngày 1 tháng 1 năm 1970. Điều này cung cấp rất nhiều sự linh hoạt trong các ngày trong quá khứ và tương lai. Với số nguyên 64 bit được sử dụng, chúng tôi có thể đại diện cho ngày khoảng 290 triệu năm trước và sau kỷ nguyên. Là một số nguyên có chữ ký 64 bit, chúng tôi có thể đại diện cho ngày trước ngày 1 tháng 1 năm 1970 với số âm và số dương đại diện cho ngày sau ngày 1 tháng 1 năm 1970.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
9 type as the UTC datetime and is a 64-bit integer. It represents the number of milliseconds since the Unix epoch, which was 00:00:00 UTC on 1 January 1970. This provides a lot of flexibilty in past and future dates. With a 64-bit integer in use, we are able to represent dates roughly 290 million years before and after the epoch. As a signed 64-bit integer we are able to represent dates prior to 1 Jan 1970 with a negative number and positive numbers represent dates after 1 Jan 1970.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Tại sao và sử dụng ở đâu
Bạn sẽ muốn sử dụng kiểu dữ liệu
9 bất cứ khi nào bạn cần lưu trữ các giá trị ngày và/hoặc thời gian trong MongoDB. Bạn cũng có thể đã thấy một loại dữ liệu
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
1 và nghĩ rằng "Ồ, đó là những gì tôi cần." Tuy nhiên, loại dữ liệu
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
1 nên được để lại để sử dụng nội bộ trong MongoDB. Loại
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
9 là loại dữ liệu mà chúng tôi sẽ muốn sử dụng để phát triển ứng dụng.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
9 data type whenever you need to store date and/or time values in MongoDB. You may have seen a
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
1 data type as well and thought "Oh, that's what I need." However, the
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
1 data type should be left for internal usage in MongoDB. The
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
9 type is the data type we'll want to use for application development.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Cách sử dụng
Có một số lợi ích khi sử dụng loại dữ liệu
9 ở chỗ nó đi kèm với một số tính năng và phương pháp tiện dụng. Cần gán một loại
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
9 cho một biến? Chúng tôi có bạn bảo hiểm ở đó:
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
9 data type in that it comes with some handy features and methods. Need to assign a
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
9 type to a variable? We have you covered there:
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Điều đó đã tạo ra chính xác những gì?
Rất tốt, chúng tôi có một ngày và thời gian được gói làm một isodate. Nếu chúng ta cần được in ở định dạng
6, chúng ta có thể sử dụng phương thức
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
7.
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
6 format, we can use the
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
7 method.
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
Gói [lại
Bắt đầu khám phá các loại BSON, như ngày, với MongoDB Atlas ngay hôm nay!MongoDB Atlas today!
Trường
8 là loại dữ liệu được khuyến nghị sử dụng khi bạn muốn lưu trữ thông tin ngày và giờ trong MongoDB. Nó cung cấp tính linh hoạt để lưu trữ các giá trị ngày và thời gian theo định dạng nhất quán có thể dễ dàng được lưu trữ và truy xuất bởi ứng dụng của bạn. Hãy thử loại dữ liệu BSON
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
9 thử cho các ứng dụng của bạn.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
8 field is the recommended data type to use when you want to store date and time information in MongoDB. It provides the flexibility to store date and time values in a consistent format that can easily be stored and retrieved by your application. Give the BSON
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
9 data type a try for your applications.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Giới thiệu
Dữ liệu ngày và thời gian thường được quản lý bởi các hệ thống cơ sở dữ liệu và cực kỳ quan trọng, nhưng thường có thể khó hơn để xử lý chính xác so với nó xuất hiện ban đầu. Cơ sở dữ liệu phải có khả năng lưu trữ dữ liệu ngày và giờ ở các định dạng rõ ràng, rõ ràng, chuyển đổi dữ liệu đó thành các định dạng thân thiện với người dùng để tương tác với các ứng dụng khách và thực hiện các hoạt động dựa trên thời gian có tính đến các phức tạp như thời gian tiết kiệm ánh sáng ban ngày.
Trong hướng dẫn này, chúng tôi sẽ thảo luận về một số công cụ mà MongoDB cung cấp để hoạt động hiệu quả với dữ liệu ngày và thời gian. Chúng tôi sẽ khám phá các loại dữ liệu có liên quan, xem các nhà khai thác và phương pháp và xem xét cách sử dụng tốt nhất các công cụ này để giữ dữ liệu ngày và giờ của bạn theo thứ tự tốt.
Liên quan đến Prisma.io
Nếu bạn đang sử dụng MongoDB, hãy kiểm tra đầu nối MongoDB của PRISMA! Bạn có thể sử dụng máy khách PRISMA để quản lý cơ sở dữ liệu MongoDB sản xuất một cách tự tin.
Prisma là một bộ công cụ cơ sở dữ liệu nguồn mở cho TypeScript và Node.js nhằm mục đích làm cho các nhà phát triển ứng dụng hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu.
Giới thiệu về tác giả]
Justin Ellingwood
Justin đã viết về cơ sở dữ liệu, Linux, cơ sở hạ tầng và các công cụ phát triển từ năm 2013. Anh hiện đang sống ở Berlin với vợ và hai con thỏ. Anh ta thường không phải viết ở ngôi thứ ba, đó là một sự giải thoát cho tất cả các bên liên quan.
Type | Number | Alias |
------------------ | ------ | ------------ |
Date | 9 | "date" |
Làm thế nào để MongoDB lưu trữ ngày sinh?
Chỉ cần sử dụng: Ngày mới [""]; Mà trả về isodate với ngày được chỉ định mà không có dấu thời gian. MongoDB sử dụng ký hiệu ngày ISO-8601, để biểu thị các đối tượng ngày.
- Làm thế nào để MongoDB lưu trữ ngày và thời gian trong Node JS?
- Định dạng tốt nhất để lưu trữ ngày và thời gian trong MongoDB là định dạng ngày JavaScript bản địa [] hoặc ISO khi nó chuyển đổi nó thành đối tượng ngày gốc BSON.
Dấu thời gian mongoDB là định dạng nào?
Dấu thời gian. BSON có loại dấu thời gian đặc biệt để sử dụng MongoDB nội bộ và không được liên kết với loại ngày thông thường. Loại dấu thời gian bên trong này là giá trị 64 bit trong đó: 32 bit quan trọng nhất là giá trị thời gian
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
Bởi vì điều này chủ yếu được triển khai để giúp điều phối các quy trình nội bộ như sao chép và chia cắt, có lẽ bạn không nên sử dụng điều này trong logic của ứng dụng của riêng bạn. Loại ngày thường có thể đáp ứng bất kỳ yêu cầu nào cho thời gian mà bạn có thể có.
Liên quan đến Prisma.io
Khi quản lý cơ sở dữ liệu MongoDB với PRISMA, bản đồ kiểu MongoDB
9 trực tiếp đến loại
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
8 trong PRISMA.
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
Prisma là một bộ công cụ cơ sở dữ liệu nguồn mở cho TypeScript và Node.js nhằm mục đích làm cho các nhà phát triển ứng dụng hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu.
Cách tạo ngày mới
Bạn có thể tạo một đối tượng
9 mới theo hai cách khác nhau:
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
9: Trả về một ngày và thời gian dưới dạng đối tượng
db.dates.insertMany[[
{
name: "Future date",
date: ISODate["2040-10-28T23:58:18Z"],
},
{
name: "Past date",
date: new Date["1852-01-15T11:25"],
},
]]
9.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
- 1: Trả về một ngày và thời gian dưới dạng đối tượng
9.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Cả hai phương pháp
9 và 1 đều tạo ra một đối tượng
db.dates.insertMany[[
{
name: "Future date",
date: ISODate["2040-10-28T23:58:18Z"],
},
{
name: "Past date",
date: new Date["1852-01-15T11:25"],
},
]]
9 được bọc trong hàm trợ giúp 1.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Ngoài ra, gọi hàm
7 mà không có hàm tạo 8 trả về một ngày và thời gian dưới dạng chuỗi thay vì đối tượng9:
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
- 7: Trả về một ngày và thời gian dưới dạng chuỗi.
Điều quan trọng là phải ghi nhớ sự khác biệt này giữa hai loại này vì nó ảnh hưởng đến những gì hoạt động có sẵn, cách lưu trữ thông tin và mức độ linh hoạt của nó sẽ cung cấp cho bạn. Nói chung, hầu như luôn luôn tốt nhất để lưu trữ thông tin ngày sử dụng loại
9 và sau đó định dạng nó cho đầu ra khi cần thiết.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Chúng ta hãy xem cách hoạt động của nó trong một phiên vỏ MongoDB.
Đầu tiên, chúng ta có thể chuyển sang cơ sở dữ liệu tạm thời mới và tạo ba tài liệu mà mỗi tài liệu có trường
8. Chúng tôi sử dụng một phương thức khác nhau để điền trường
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
8 cho mỗi đối tượng:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
Theo mặc định, mỗi cơ chế này sẽ lưu trữ ngày và giờ hiện tại. Bạn có thể lưu trữ một ngày và thời gian khác bằng cách thêm chuỗi ngày được định dạng ISO 8601 làm đối số:
db.dates.insertMany[[
{
name: "Future date",
date: ISODate["2040-10-28T23:58:18Z"],
},
{
name: "Past date",
date: new Date["1852-01-15T11:25"],
},
]]
Chúng sẽ tạo ra một đối tượng
9 vào ngày và thời gian thích hợp.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Một điều cần lưu ý là sự bao gồm của dấu vết
5 trong tài liệu mới đầu tiên ở trên. Điều này chỉ ra rằng ngày và thời gian đang được cung cấp dưới dạng UTC. Chỉ định ngày mà không có
{
"_id" : ObjectId["62726af5a3dc7398b97e6e93"],
"name" : "Created with `Date[]`",
"date" : "Wed May 04 2022 12:00:53 GMT+0000 [UTC]"
}
{
"_id" : ObjectId["62726af5a3dc7398b97e6e94"],
"name" : "Created with `new Date[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"]
}
{
"_id" : ObjectId["62726af5a3dc7398b97e6e95"],
"name" : "Created with `ISODate[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"]
}
{
"_id" : ObjectId["62728b57a3dc7398b97e6e96"],
"name" : "Future date",
"date" : ISODate["2040-10-28T23:58:18Z"]
}
{
"_id" : ObjectId["62728c5ca3dc7398b97e6e97"],
"name" : "Past date",
"date" : ISODate["1852-01-15T11:25:00Z"]
}
5 sẽ khiến MongoDB diễn giải đầu vào liên quan đến thời gian địa phương hiện tại [mặc dù nó sẽ luôn luôn chuyển đổi và lưu trữ nó dưới dạng ngày UTC bên trong].
{
"_id" : ObjectId["62726af5a3dc7398b97e6e93"],
"name" : "Created with `Date[]`",
"date" : "Wed May 04 2022 12:00:53 GMT+0000 [UTC]"
}
{
"_id" : ObjectId["62726af5a3dc7398b97e6e94"],
"name" : "Created with `new Date[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"]
}
{
"_id" : ObjectId["62726af5a3dc7398b97e6e95"],
"name" : "Created with `ISODate[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"]
}
{
"_id" : ObjectId["62728b57a3dc7398b97e6e96"],
"name" : "Future date",
"date" : ISODate["2040-10-28T23:58:18Z"]
}
{
"_id" : ObjectId["62728c5ca3dc7398b97e6e97"],
"name" : "Past date",
"date" : ISODate["1852-01-15T11:25:00Z"]
}
Xác thực loại đối tượng ngày
Tiếp theo, chúng ta có thể hiển thị các tài liệu kết quả để xem mong muốn lưu trữ dữ liệu ngày như thế nào:
{
"_id" : ObjectId["62726af5a3dc7398b97e6e93"],
"name" : "Created with `Date[]`",
"date" : "Wed May 04 2022 12:00:53 GMT+0000 [UTC]"
}
{
"_id" : ObjectId["62726af5a3dc7398b97e6e94"],
"name" : "Created with `new Date[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"]
}
{
"_id" : ObjectId["62726af5a3dc7398b97e6e95"],
"name" : "Created with `ISODate[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"]
}
{
"_id" : ObjectId["62728b57a3dc7398b97e6e96"],
"name" : "Future date",
"date" : ISODate["2040-10-28T23:58:18Z"]
}
{
"_id" : ObjectId["62728c5ca3dc7398b97e6e97"],
"name" : "Past date",
"date" : ISODate["1852-01-15T11:25:00Z"]
}
Đúng như dự đoán, các trường
8 được điền với 1 và
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
9 chứa các đối tượng
db.dates.insertMany[[
{
name: "Future date",
date: ISODate["2040-10-28T23:58:18Z"],
},
{
name: "Past date",
date: new Date["1852-01-15T11:25"],
},
]]
9 [được bọc trong trình trợ giúp
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
1]. Ngược lại, trường được tạo ra bởi cuộc gọi chức năng trần 7 được lưu trữ dưới dạng chuỗi.
db.dates.find[].map[
function[date_doc] {
date_doc["is_a_Date_object"] = date_doc.date instanceof Date;
date_doc["date_storage_value"] = date_doc.date.valueOf[];
return date_doc;
}
]
Bạn có thể xác minh xem các trường
8 có chứa đối tượng
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
9 thực tế bằng cách gọi hàm
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
5 trên bộ sưu tập. Bản đồ kiểm tra từng trường
db.dates.find[].map[
function[date_doc] {
date_doc["is_a_Date_object"] = date_doc.date instanceof Date;
date_doc["date_storage_value"] = date_doc.date.valueOf[];
return date_doc;
}
]
8 để xem liệu đối tượng nó lưu trữ có phải là một thể hiện của loại
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
9 hay không và hiển thị kết quả trong một trường mới gọi là
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
8. Ngoài ra, chúng tôi sẽ sử dụng phương pháp
db.dates.find[].map[
function[date_doc] {
date_doc["is_a_Date_object"] = date_doc.date instanceof Date;
date_doc["date_storage_value"] = date_doc.date.valueOf[];
return date_doc;
}
]
9 để hiển thị cách mỗi trường
db.dates.find[].map[
function[date_doc] {
date_doc["is_a_Date_object"] = date_doc.date instanceof Date;
date_doc["date_storage_value"] = date_doc.date.valueOf[];
return date_doc;
}
]
8 thực sự được lưu trữ bởi MongoDB:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
db.dates.find[].map[
function[date_doc] {
date_doc["is_a_Date_object"] = date_doc.date instanceof Date;
date_doc["date_storage_value"] = date_doc.date.valueOf[];
return date_doc;
}
]
[
{
"_id" : ObjectId["62726af5a3dc7398b97e6e93"],
"name" : "Created with `Date[]`",
"date" : "Wed May 04 2022 12:00:53 GMT+0000 [UTC]",
"is_a_Date_object" : false,
"date_storage_value" : "Wed May 04 2022 12:00:53 GMT+0000 [UTC]"
},
{
"_id" : ObjectId["62726af5a3dc7398b97e6e94"],
"name" : "Created with `new Date[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"],
"is_a_Date_object" : true,
"date_storage_value" : 1651665653307
},
{
"_id" : ObjectId["62726af5a3dc7398b97e6e95"],
"name" : "Created with `ISODate[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"],
"is_a_Date_object" : true,
"date_storage_value" : 1651665653307
},
{
"_id" : ObjectId["62728b57a3dc7398b97e6e96"],
"name" : "Future date",
"date" : ISODate["2040-10-28T23:58:18Z"],
"is_a_Date_object" : true,
"date_storage_value" : 2235081498000
},
{
"_id" : ObjectId["62728c5ca3dc7398b97e6e97"],
"name" : "Past date",
"date" : ISODate["1852-01-15T11:25:00Z"],
"is_a_Date_object" : true,
"date_storage_value" : -3722502900000
}
]
Điều này xác nhận rằng các trường được hiển thị dưới dạng
1 là các trường hợp của loại
[
{
"_id" : ObjectId["62726af5a3dc7398b97e6e93"],
"name" : "Created with `Date[]`",
"date" : "Wed May 04 2022 12:00:53 GMT+0000 [UTC]",
"is_a_Date_object" : false,
"date_storage_value" : "Wed May 04 2022 12:00:53 GMT+0000 [UTC]"
},
{
"_id" : ObjectId["62726af5a3dc7398b97e6e94"],
"name" : "Created with `new Date[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"],
"is_a_Date_object" : true,
"date_storage_value" : 1651665653307
},
{
"_id" : ObjectId["62726af5a3dc7398b97e6e95"],
"name" : "Created with `ISODate[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"],
"is_a_Date_object" : true,
"date_storage_value" : 1651665653307
},
{
"_id" : ObjectId["62728b57a3dc7398b97e6e96"],
"name" : "Future date",
"date" : ISODate["2040-10-28T23:58:18Z"],
"is_a_Date_object" : true,
"date_storage_value" : 2235081498000
},
{
"_id" : ObjectId["62728c5ca3dc7398b97e6e97"],
"name" : "Past date",
"date" : ISODate["1852-01-15T11:25:00Z"],
"is_a_Date_object" : true,
"date_storage_value" : -3722502900000
}
]
9 trong khi
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
8 được tạo với hàm trần 7 không.
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
Ngoài ra, đầu ra trên cho thấy các đối tượng được lưu trữ với loại
9 được ghi là số nguyên đã ký. Đúng như dự đoán, đối tượng ngày liên quan đến ngày từ năm 1852 là âm vì nó được tính ngược từ tháng 1 năm 1970.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Truy vấn cho các đối tượng ngày
Nếu bạn có một bộ sưu tập với các biểu diễn hỗn hợp của ngày như thế này, bạn có thể truy vấn cho các trường có loại phù hợp bằng toán tử
6.
[
{
"_id" : ObjectId["62726af5a3dc7398b97e6e93"],
"name" : "Created with `Date[]`",
"date" : "Wed May 04 2022 12:00:53 GMT+0000 [UTC]",
"is_a_Date_object" : false,
"date_storage_value" : "Wed May 04 2022 12:00:53 GMT+0000 [UTC]"
},
{
"_id" : ObjectId["62726af5a3dc7398b97e6e94"],
"name" : "Created with `new Date[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"],
"is_a_Date_object" : true,
"date_storage_value" : 1651665653307
},
{
"_id" : ObjectId["62726af5a3dc7398b97e6e95"],
"name" : "Created with `ISODate[]`",
"date" : ISODate["2022-05-04T12:00:53.307Z"],
"is_a_Date_object" : true,
"date_storage_value" : 1651665653307
},
{
"_id" : ObjectId["62728b57a3dc7398b97e6e96"],
"name" : "Future date",
"date" : ISODate["2040-10-28T23:58:18Z"],
"is_a_Date_object" : true,
"date_storage_value" : 2235081498000
},
{
"_id" : ObjectId["62728c5ca3dc7398b97e6e97"],
"name" : "Past date",
"date" : ISODate["1852-01-15T11:25:00Z"],
"is_a_Date_object" : true,
"date_storage_value" : -3722502900000
}
]
Chẳng hạn, để truy vấn cho tất cả các tài liệu trong đó
8 là đối tượng
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
9, bạn có thể nhập:
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
db.dates.find[{
date: { $type: "date" },
}].pretty[]
0
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
Để tìm các trường hợp trong đó trường
8 được lưu trữ dưới dạng chuỗi, hãy loại:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
1
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
2
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
Loại
9 cho phép bạn thực hiện các truy vấn hiểu mối quan hệ giữa các đơn vị thời gian.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Chẳng hạn, bạn có thể so sánh các đối tượng
9 theo quy định như bạn làm với các loại khác. Để kiểm tra ngày trong tương lai, bạn có thể nhập:
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
3
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
4
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
Cách sử dụng các phương thức loại ____29
Bạn có thể hoạt động trên các đối tượng
9 với nhiều phương thức và toán tử được bao gồm. Chẳng hạn, bạn có thể trích xuất các thành phần ngày và giờ khác nhau từ một ngày và in ở nhiều định dạng khác nhau.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Một cuộc biểu tình có lẽ là cách nhanh nhất để thể hiện chức năng này.
Đầu tiên, hãy chọn ngày từ tài liệu có đối tượng ngày:
5
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
Bây giờ, chúng ta có thể chọn trường
8 và trích xuất các thành phần khác nhau từ nó bằng cách gọi các phương thức khác nhau trên đối tượng:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
6
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
7
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
Ngoài ra còn có các phương pháp đồng hành có thể được sử dụng để đặt thời gian bằng cách cung cấp các thành phần thời gian và ngày khác nhau. Ví dụ: bạn có thể thay đổi năm bằng cách gọi phương thức
5:
db.dates.find[{
date: { $type: "date" },
}].pretty[]
8
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
9
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
Chúng tôi cũng có thể chuyển ngày vào các định dạng khác nhau để hiển thị:
0
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
1
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Đây là tất cả các phương pháp chủ yếu liên quan đến loại
9 của JavaScript.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Cách sử dụng MongoDB
9 Hàm tổng hợp
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
MongoDB cung cấp một số chức năng khác cũng có thể thao tác ngày. Một ví dụ hữu ích về điều này là hàm tổng hợp
8. Bạn có thể chuyển cuộc gọi
db.dates.find[{
date: { $type: "date" },
}].pretty[]
8 với đối tượng
db.dates.find[{
date: { $type: "date" },
}].pretty[]
9, trình xác định chuỗi định dạng và chỉ báo múi giờ. MongoDB sẽ sử dụng chuỗi định dạng làm mẫu để tìm ra cách xuất đối tượng
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
9 đã cho với múi giờ được sử dụng để bù đầu ra từ UTC một cách chính xác.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Ở đây, chúng tôi sẽ định dạng các ngày trong bộ sưu tập
02 của chúng tôi bằng cách sử dụng chuỗi tùy ý. Chúng tôi cũng sẽ diễn ra những ngày đến New York Timezone.
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
Đầu tiên, chúng ta cần xóa bất kỳ tài liệu đi lạc nào có thể đã lưu trường
8 dưới dạng chuỗi:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
2
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Bây giờ chúng ta có thể chạy một tập hợp với hàm
04:
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
3
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
4
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Hàm
05 cũng hữu ích tương tự. Nó có thể được sử dụng để phân tách trường
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
9 thành các bộ phận cấu thành của nó.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Ví dụ: chúng ta có thể gõ:
5
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
6
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Tài liệu MongoDB về các chức năng tổng hợp có thông tin về các chức năng bổ sung mà bạn có thể sử dụng để thao tác các đối tượng
9 để hiển thị hoặc so sánh.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Sự kết luận
Trong hướng dẫn này, chúng tôi đã đề cập đến một số cách khác nhau mà bạn có thể làm việc với dữ liệu ngày và giờ trong MongoDB. Hầu hết dữ liệu tạm thời có lẽ nên được lưu trữ trong kiểu dữ liệu
9 của MongoDB vì điều này cung cấp rất nhiều tính linh hoạt khi hoạt động trên dữ liệu hoặc hiển thị nó.
use temp_db
db.dates.insertMany[[
{
name: "Created with `Date[]`",
date: Date[],
},
{
name: "Created with `new Date[]`",
date: new Date[],
},
{
name: "Created with `ISODate[]`",
date: ISODate[],
},
]]
Làm quen với cách lưu trữ dữ liệu ngày và thời gian trong nội bộ, cách ép nó thành các định dạng mong muốn trên đầu ra và cách so sánh, sửa đổi và phân tách dữ liệu thành các khối hữu ích có thể giúp bạn giải quyết nhiều vấn đề khác nhau. Mặc dù thông tin ngày có thể là thách thức để làm việc, tận dụng các phương pháp và nhà khai thác có sẵn có thể giúp giảm thiểu một số công việc nặng nề.
Liên quan đến Prisma.io
Nếu bạn đang sử dụng MongoDB, hãy kiểm tra đầu nối MongoDB của PRISMA! Bạn có thể sử dụng máy khách PRISMA để quản lý cơ sở dữ liệu MongoDB sản xuất một cách tự tin.
Để bắt đầu làm việc với MongoDB và Prisma, hãy kiểm tra hướng dẫn bắt đầu từ đầu của chúng tôi hoặc làm thế nào để thêm vào một dự án hiện có.
Prisma là một bộ công cụ cơ sở dữ liệu nguồn mở cho TypeScript và Node.js nhằm mục đích làm cho các nhà phát triển ứng dụng hiệu quả và tự tin hơn khi làm việc với cơ sở dữ liệu.
Giới thiệu về tác giả]
Justin Ellingwood
Justin đã viết về cơ sở dữ liệu, Linux, cơ sở hạ tầng và các công cụ phát triển từ năm 2013. Anh hiện đang sống ở Berlin với vợ và hai con thỏ. Anh ta thường không phải viết ở ngôi thứ ba, đó là một sự giải thoát cho tất cả các bên liên quan.
Làm thế nào để MongoDB lưu trữ ngày sinh?
Chỉ cần sử dụng: Ngày mới [""];Mà trả về isodate với ngày được chỉ định mà không có dấu thời gian.MongoDB sử dụng ký hiệu ngày ISO-8601, để biểu thị các đối tượng ngày.new Date[""]; Which returns the ISODate with the specified date without a timestamp. MongoDB uses the ISO-8601 date notation, to represent date objects.Làm thế nào để MongoDB lưu trữ ngày và thời gian trong Node JS?
Định dạng tốt nhất để lưu trữ ngày và thời gian trong MongoDB là định dạng ngày JavaScript bản địa [] hoặc ISO khi nó chuyển đổi nó thành đối tượng ngày gốc BSON.native javascript Date[] or ISO date format as it internally converts it into BSON native Date object.Dấu thời gian mongoDB là định dạng nào?
Dấu thời gian.BSON có loại dấu thời gian đặc biệt để sử dụng MongoDB nội bộ và không được liên kết với loại ngày thông thường.Loại dấu thời gian bên trong này là giá trị 64 bit trong đó: 32 bit quan trọng nhất là giá trị thời gian64 bit value where: the most significant 32 bits are a time_t value [seconds since the Unix epoch]MongoDB có ngày ở UTC không?
MongoDB sẽ lưu trữ thông tin ngày và thời gian bằng UTC trong nội bộ, nhưng có thể dễ dàng chuyển đổi sang thời gian khác tại thời điểm truy xuất khi cần thiết., but can easily convert to other timezones at time of retrieval as needed.