MongoDB poskytuje NOW
systémová proměnná, která vám umožňuje získat aktuální hodnotu data a času při použití agregačního kanálu.
To může být užitečné, když chcete aktualizovat dokument aktuálním datem a časem.
Počínaje MongoDB 4.2 mohou metody aktualizace přijímat agregační kanál. Proto NOW
lze použít jako alternativu k $currentDate
pole operátor aktualizace pro nastavení aktuálního data a času při použití kterékoli z metod aktualizace.
Pro přístup k NOW
systémovou proměnnou, před ní vložte dva znaky dolaru a vložte ji do uvozovek ("$$NOW"
).
Příklad
Předpokládejme, že máme sbírku nazvanou dogs
který obsahuje následující dokument:
{ "_id" : 1, "name" : "Fetch", "weight" : 25 }
Zde je příklad použití NOW
systémová proměnná při aktualizaci tohoto dokumentu:
db.dogs.updateOne(
{ _id : 1 },
[
{ $set : { weight : 30, lastModified : "$$NOW" } }
]
)
Nyní se znovu podíváme na dokument:
db.dogs.find( { _id: 1 } ).pretty()
Výsledek:
{ "_id" : 1, "name" : "Fetch", "weight" : 30, "lastModified" : ISODate("2021-01-27T01:29:32.833Z") }
lastModified
pole bylo přidáno s objektem Date, který obsahuje aktuální datum a čas.
Je zde také CLUSTER_TIME
systémová proměnná, která vrací aktuální časové razítko, i když je k dispozici pouze v sadách replik a sdílených clusterech.
Všimněte si také, že NOW
a CLUSTER_TIME
hodnoty zůstávají v celém kanálu stejné.