MongoDB предоставя NOW системна променлива, която ви позволява да получите текущата стойност за дата и час, когато използвате конвейер за агрегиране.
Това може да бъде полезно, когато искате да актуализирате документ с текущата дата и час.
Започвайки от MongoDB 4.2, методите за актуализиране могат да приемат конвейер за агрегиране. Следователно, NOW може да се използва като алтернатива на $currentDate полеви оператор за актуализиране за настройка на текущата дата и час при използване на някой от методите за актуализиране.
За достъп до NOW системна променлива, добавете пред нея два знака за долар и я оградете в кавички ("$$NOW" ).
Пример
Да предположим, че имаме колекция, наречена dogs който съдържа следния документ:
{ "_id" : 1, "name" : "Fetch", "weight" : 25 }
Ето пример за използване на NOW системна променлива при актуализиране на този документ:
db.dogs.updateOne(
{ _id : 1 },
[
{ $set : { weight : 30, lastModified : "$$NOW" } }
]
) Сега нека да разгледаме отново документа:
db.dogs.find( { _id: 1 } ).pretty() Резултат:
{
"_id" : 1,
"name" : "Fetch",
"weight" : 30,
"lastModified" : ISODate("2021-01-27T01:29:32.833Z")
}
lastModified полето е добавено с обект Date, който съдържа текущата дата и час.
Има и CLUSTER_TIME системна променлива, която връща текущото времеви печат, въпреки че това е достъпно само за набори от реплики и разчленени клъстери.
Също така имайте предвид, че NOW и CLUSTER_TIME стойностите остават същите в целия конвейер.