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
стойностите остават същите в целия конвейер.