MongoDB stellt den NOW
bereit Systemvariable, mit der Sie den aktuellen datetime-Wert abrufen können, wenn Sie eine Aggregationspipeline verwenden.
Dies kann nützlich sein, wenn Sie ein Dokument mit der aktuellen Datumszeit aktualisieren möchten.
Ab MongoDB 4.2 können Aktualisierungsmethoden eine Aggregationspipeline akzeptieren. Deshalb NOW
kann alternativ zum $currentDate
verwendet werden Feldaktualisierungsoperator zum Festlegen der aktuellen Datumszeit, wenn eine der Aktualisierungsmethoden verwendet wird.
Zugriff auf NOW
Systemvariable, stellen Sie ihr zwei Dollarzeichen voran und setzen Sie sie in Anführungszeichen ("$$NOW"
). ).
Beispiel
Angenommen, wir haben eine Sammlung namens dogs
die das folgende Dokument enthält:
{ "_id" : 1, "name" : "Fetch", "weight" : 25 }
Hier ist ein Beispiel für die Verwendung von NOW
Systemvariable beim Aktualisieren dieses Dokuments:
db.dogs.updateOne(
{ _id : 1 },
[
{ $set : { weight : 30, lastModified : "$$NOW" } }
]
)
Sehen wir uns nun das Dokument noch einmal an:
db.dogs.find( { _id: 1 } ).pretty()
Ergebnis:
{ "_id" : 1, "name" : "Fetch", "weight" : 30, "lastModified" : ISODate("2021-01-27T01:29:32.833Z") }
Die lastModified
Feld wurde mit einem Date-Objekt hinzugefügt, das das aktuelle Datum und die aktuelle Uhrzeit enthält.
Es gibt auch eine CLUSTER_TIME
Systemvariable, die den aktuellen Zeitstempel zurückgibt, obwohl dies nur für Replikatsätze und Sharding-Cluster verfügbar ist.
Beachten Sie auch, dass der NOW
und CLUSTER_TIME
Werte bleiben in der gesamten Pipeline gleich.