MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB NOW Aggregationsvariable

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.