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 với PRISMA, bạn có thể sử dụng đầu nối MongoDB để kết nối và quản lý cơ sở dữ liệu của mình. Bả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[], }, ]] 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
7 của Prisma trực tiếp đến loại
8 của MongoDB.
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ác loại MongoDB 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 và {
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
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[],
},
]]
8 và 0
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
Loại
1 trong MongoDB có thể lưu trữ các giá trị ngày và thời gian như một đơn vị kết hợp.
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
Ở đây, cột bên trái đại diện cho tên BSON [nhị phân JSON] cho kiểu dữ liệu và cột thứ hai đại diện cho số ID được liên kết với loại đó. Cột "bí danh" cuối cùng đại diện cho chuỗi mà MongoDB sử dụng để biểu diễn loại:
Type | Number | Alias |
------------------ | ------ | ------------ |
Date | 9 | "date" |
Loại ngày BSON là số nguyên có chữ ký 64 bit đại diện cho số mili giây kể từ thời đại Unix [ngày 1 tháng 1 năm 1970]. Các số dương biểu thị thời gian trôi qua kể từ kỷ nguyên trong khi các số âm biểu thị thời gian di chuyển ngược từ kỷ nguyên.
Lưu trữ dữ liệu ngày và thời gian dưới dạng một số nguyên lớn có lợi vì nó:
- Cho phép MongoDB lưu trữ ngày với độ chính xác mili giây
- Cung cấp sự linh hoạt trong cách hiển thị ngày và thời gian
Bởi vì loại ngày không lưu trữ thông tin bổ sung như múi giờ, nên bối cảnh đó phải được lưu trữ riêng nếu nó có liên quan. 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.
MongoDB cũng cung cấp một loại
0 chủ yếu được sử dụng trong nội bộ:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
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
Nếu bạn đang sử dụng MongoDB với PRISMA, bạn có thể sử dụng đầu nối MongoDB để kết nối và quản lý cơ sở dữ liệu của mình. Bản đồ loại
7 của Prisma 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 của MongoDB.
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[],
},
]]
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ác loại MongoDB
8 và
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[],
},
]]
0
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
Loại
1 trong MongoDB có thể lưu trữ các giá trị ngày và thời gian như một đơn vị kết hợp.
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
- Ở đây, cột bên trái đại diện cho tên BSON [nhị phân JSON] cho kiểu dữ liệu và cột thứ hai đại diện cho số ID được liên kết với loại đó. Cột "bí danh" cuối cùng đại diện cho chuỗi mà MongoDB sử dụng để biểu diễn loại:
- Loại ngày BSON là số nguyên có chữ ký 64 bit đại diện cho số mili giây kể từ thời đại Unix [ngày 1 tháng 1 năm 1970]. Các số dương biểu thị thời gian trôi qua kể từ kỷ nguyên trong khi các số âm biểu thị thời gian di chuyển ngược từ kỷ nguyên.
Lưu trữ dữ liệu ngày và thời gian dưới dạng một số nguyên lớn có lợi vì nó:
Cho phép MongoDB lưu trữ ngày với độ chính xác mili giây
- Cung cấp sự linh hoạt trong cách hiển thị ngày và thời gian
Bởi vì loại ngày không lưu trữ thông tin bổ sung như múi giờ, nên bối cảnh đó phải được lưu trữ riêng nếu nó có liên quan. 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.
MongoDB cũng cung cấp một loại
0 chủ yếu được sử dụng trong nội bộ:
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
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ó.
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"]
]
}
Khi quản lý cơ sở dữ liệu MongoDB với PRISMA, bản đồ kiểu MongoDB
8 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[],
},
]]
7 trong PRISMA.
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.insertMany[[
{
name: "Future date",
date: ISODate["2040-10-28T23:58:18Z"],
},
{
name: "Past date",
date: new Date["1852-01-15T11:25"],
},
]]
Cách tạo ngày mới
Bạn có thể tạo một đối tượng
8 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[],
},
]]
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
7 được điền vớ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 và
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
6 chứa các đối tượng
{
"acknowledged" : true,
"insertedIds" : [
ObjectId["62726af5a3dc7398b97e6e93"],
ObjectId["62726af5a3dc7398b97e6e94"],
ObjectId["62726af5a3dc7398b97e6e95"]
]
}
8 [được bọc trong trình trợ giúp 8]. Ngược lại, trường được điền bởi cuộc 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[],
},
]]
4 được lưu trữ dưới dạng chuỗi.
db.dates.insertMany[[
{
name: "Future date",
date: ISODate["2040-10-28T23:58:18Z"],
},
{
name: "Past date",
date: new Date["1852-01-15T11:25"],
},
]]
Bạn có thể xác minh xem các trường
7 có chứa đố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[],
},
]]
8 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[],
},
]]
2 qua bộ sưu tập. Bản đồ kiểm tra từng trường
{
"_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"]
}
7 để xem đối tượng nó lưu trữ có phải là một thể hiện của 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 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[],
},
]]
5. Ngoài ra, chúng tôi sẽ sử dụng phương pháp
{
"_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"]
}
6 để hiển thị cách mỗi trường
{
"_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"]
}
7 thực sự được lưu trữ bởi MongoDB:
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[].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
8 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]"
}
{
"_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"]
}
8 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[],
},
]]
7 được tạo vớ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[],
},
]]
4 trần thì không.
db.dates.insertMany[[
{
name: "Future date",
date: ISODate["2040-10-28T23:58:18Z"],
},
{
name: "Past date",
date: new Date["1852-01-15T11:25"],
},
]]
Ngoài ra, đầu ra trên cho thấy các đối tượng được lưu trữ với loại
8 đượ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ử
3.
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;
}
]
Chẳng hạn, để truy vấn cho tất cả các tài liệu trong đó
7 là đố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[],
},
]]
8, 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 phiên bản trong đó trường
7 được lưu trữ dưới dạng chuỗi, hãy 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[],
},
]]
1
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
2
Type | Number | Alias |
------------------ | ------ | ------------ |
Timestamp | 17 | "timestamp" |
Loại
8 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
8 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
8
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ạn có thể hoạt động trên các đối tượng
8 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
7 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:
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
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
2:
[
{
"_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
}
]
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
8 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
8 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
5. Bạn có thể vượt qua cuộc gọ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
}
]
5 với đối tượng
[
{
"_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
}
]
8, 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[],
},
]]
8 đã 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
9 của chúng tôi bằng cách sử dụng một chuỗi tùy ý. Chúng tôi cũng sẽ diễn ra những ngày đến New York Timezone.
[
{
"_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
}
]
Đầ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
7 dưới dạng chuỗ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[],
},
]]
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
1:
db.dates.find[{
date: { $type: "date" },
}].pretty[]
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
2 cũng hữu ích tương tự. Nó có thể được sử dụng để phân tách trường
db.dates.find[{
date: { $type: "date" },
}].pretty[]
8 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
8 để 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
8 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.