Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Cách chèn tài liệu có trường Date trong MongoDB

Giới thiệu

Để chèn tài liệu có trường ngày tháng trong MongoDB, bạn sử dụng constructor Date() hoặc ISODate() trực tiếp trong document.

Cú pháp

// Cách 1: new Date() với string ISO
"tenTruong": new Date("2019-01-01")

// Cách 2: ISODate() (MongoDB shell helper)
"tenTruong": ISODate("2019-01-01")

// Cách 3: new Date() với các tham số
"tenTruong": new Date(2019, 0, 1) // Tháng 0 = Tháng 1

Ví dụ minh họa

1. Insert 3 tài liệu với ngày khác nhau

> db.chenNgayDemo.insertOne({
    "TenNguoiDung": "Larry",
    "TinNhan": "Hi",
    "NgayDang": new Date("2012-09-24")
});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9cca58a629b87623db1b16") }

> db.chenNgayDemo.insertOne({
    "TenNguoiDung": "Chris",
    "TinNhan": "Hello",
    "NgayDang": new Date("2015-12-31")
});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9cca71a629b87623db1b17") }

> db.chenNgayDemo.insertOne({
    "TenNguoiDung": "Robert",
    "TinNhan": "Bye",
    "NgayDang": new Date("2019-01-01")
});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9cca85a629b87623db1b18") }

2. Kết quả - MongoDB lưu dưới dạng ISODate

{ "_id" : ObjectId("5c9cca58a629b87623db1b16"), "TenNguoiDung" : "Larry", "TinNhan" : "Hi", "NgayDang" : ISODate("2012-09-24T00:00:00Z") }
{ "_id" : ObjectId("5c9cca71a629b87623db1b17"), "TenNguoiDung" : "Chris", "TinNhan" : "Hello", "NgayDang" : ISODate("2015-12-31T00:00:00Z") }
{ "_id" : ObjectId("5c9cca85a629b87623db1b18"), "TenNguoiDung" : "Robert", "TinNhan" : "Bye", "NgayDang" : ISODate("2019-01-01T00:00:00Z") }

Các định dạng ngày được hỗ trợ

Định dạngVí dụGhi chú
ISO 8601 UTC"2019-01-01T00:00:00Z"Khuyên dùng, không ambigu
ISO 8601 Local"2019-01-01"Được hiểu là local midnight
RFC 2822"Mon, 01 Jan 2019 00:00:00 GMT"Hỗ trợ nhưng ít dùng
Timestamp (ms)1546300800000Milliseconds since epoch

Best Practices

  • Luôn dùng UTC (ISODate với Z suffix) để tránh vấn đề múi giờ
  • Trong application code, dùng Date object của ngôn ngữ (JavaScript Date, Python datetime, Java Instant...)
  • MongoDB driver tự động chuyển đổi Date object thành BSON Date
  • Query date range: { ngay: { $gte: ISODate("2019-01-01"), $lt: ISODate("2019-02-01") } }