Để 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 MongoDBsetHours(... + 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 } }
)