В 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)
}