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

Chuyển đổi Date sang Timestamp trong MongoDB

Để chuyển đổi kiểu Date (ISODate) thành timestamp số (milliseconds từ epoch), dùng $toLong trong pipeline aggregate.

Dữ liệu mẫu

> db.demo93.insertOne({"UserName":"Chris","ArrivalDate":new ISODate("2020-10-01")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d4b6479799acab037af68") }
> db.demo93.insertOne({"UserName":"David","ArrivalDate":new ISODate("2019-12-31")});
{ "acknowledged" : true, "insertedId" : ObjectId("5e2d4b7379799acab037af69") }

Truy vấn aggregate chuyển đổi

> db.demo93.aggregate([
...     { "$match": { "UserName": "Chris" }},
...     { "$addFields": {
...         "timestamp": { "$toLong": "$ArrivalDate" }
...     }}
... ]);

Kết quả

{ "_id" : ObjectId("5e2d4b6479799acab037af68"), "UserName" : "Chris", "ArrivalDate" : ISODate("2020-10-01T00:00:00Z"), "timestamp" : NumberLong("1601510400000") }

Giải thích:

  • $toLong: Chuyển Date → số milliseconds (Long/64-bit integer)
  • Kết quả 1601510400000 = 2020-10-01 00:00:00 UTC
  • Có thể dùng $dateToString để format thành chuỗi ngày tháng tùy chỉnh

Toán tử chuyển đổi ngày tháng khác:

  • $toDate: String/Long → Date
  • $dateToString: Date → String format tùy chỉnh
  • $year, $month, $day, $hour...: Trích xuất thành phần