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

Cập nhật Timestamp thành ngày hiện tại trong MongoDB

Để cập nhật trường ngày thành ngày hiện tại, dùng update() kết hợp biến JavaScript new Date().

Tạo collection với ngày cũ

> db.demo644.insertOne({"ShippingDate": new ISODate("2018-04-19")});
> db.demo644.insertOne({"ShippingDate": new ISODate("2019-01-10")});

Hiển thị dữ liệu gốc

> db.demo644.find();

Kết quả:

ISODate("2018-04-19T00:00:00Z"), ISODate("2019-01-10T00:00:00Z")

Cập nhật thành ngày hiện tại (+1 giờ)

> var todayDate = new Date();
> todayDate.setHours(todayDate.getHours() + 1);
> db.demo644.update({}, {$set: {ShippingDate: todayDate}}, {multi: true});
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

Kết quả sau cập nhật

> db.demo644.find();

Kết quả (cả 2 document cùng ngày giờ mới):

ISODate("2020-04-19T17:04:58.453Z") - cả 2 document

Giải thích:

  • var todayDate = new Date(): Lấy ngày giờ hiện tại của server MongoDB
  • setHours(... + 1): Điều chỉnh múi giờ (ví dụ +1 giờ)
  • {multi: true}: Cập nhật **tất cả** document khớp (rỗng {} khớp tất cả)
  • Nếu thiếu multi: true, chỉ cập nhật document đầu tiên

Cách hiện đại (MongoDB 3.2+):

db.demo644.updateMany(
  {},
  { $set: { ShippingDate: new Date() } }
)

Hoặc dùng $currentDate để để MongoDB tự đặt giá trị:

db.demo644.updateMany(
  {},
  { $currentDate: { ShippingDate: true } }
)