В MongoDB, $currentDate
операторът задава стойността на поле на текущата дата.
Може да бъде зададена като Дата или клеймо за време Тип. По подразбиране е Дата .
$currentDate
е актуализация оператор и може да се използва само при актуализиране на документи, не и при вмъкването им (въпреки че може да се използва при операции за внасяне).
Пример
Да предположим, че имаме колекция, наречена dogs
със следния документ:
{
"_id" : 1,
"name" : "Wag",
"goodDog" : true,
"dateModified" : ISODate("2020-01-01T00:00:00Z")
}
И ние искаме да направим промяна в документа. Когато направим промяната, трябва да актуализираме dateModified
поле до датата на промяната.
Следователно можем да използваме $currentDate
оператор, за да зададете датата на текущата дата. Можем да направим нещо подобно:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: true
},
$set: {
goodDog: false
}
}
)
Тук използваме dateModified: true
за да зададете датата с помощта на Дата тип (това е съкратен начин да го зададете като Дата тип).
Можем да проверим резултата, като погледнем отново колекцията/документа:
db.dogs.findOne()
Резултат:
{ "_id" : 1, "name" : "Wag", "goodDog" : false, "dateModified" : ISODate("2021-01-16T04:17:41.206Z") }
Можем да видим, че dateModified
полето е актуализирано до текущата дата (т.е. датата/часа, когато изпълних актуализацията). goodDog
полето също е актуализирано, както е посочено.
Чети за време
По подразбиране $currentDate
използва Дата Тип. Като алтернатива можете да посочите типа в документ. Следователно можете да използвате {$type: timestamp}
така че датата да се актуализира до клеймо за време Тип BSON.
Пример:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: { $type: "timestamp" }
},
$set: {
goodDog: true
}
}
)
В този случай предоставихме документ, който посочва клеймото за време Тип.
Можете също да използвате този метод за Дата тип (или използвайте стенографския метод, както се вижда в предишния пример).
Проверете колекцията:
db.dogs.findOne()
Резултат:
{ "_id" : 1, "name" : "Wag", "goodDog" : true, "dateModified" : Timestamp(1610771023, 1) }