sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB NOW Aggregationsvariabel

MongoDB tillhandahåller NOW systemvariabel som låter dig få det aktuella datetime-värdet när du använder en aggregeringspipeline.

Detta kan vara användbart när du vill uppdatera ett dokument med aktuellt datum och tid.

Från och med MongoDB 4.2 kan uppdateringsmetoder acceptera en aggregeringspipeline. Därför NOW kan användas som ett alternativ till $currentDate fältuppdateringsoperatör för att ställa in aktuell datumtid när någon av uppdateringsmetoderna används.

För att komma åt NOW systemvariabel, prefix den med två dollartecken och omge den inom citattecken ("$$NOW" ).

Exempel

Anta att vi har en samling som heter dogs som innehåller följande dokument:

{ "_id" : 1, "name" : "Fetch", "weight" : 25 }

Här är ett exempel på hur du använder NOW systemvariabel när du uppdaterar det dokumentet:

db.dogs.updateOne(
  { _id : 1 },
  [
    { $set : { weight : 30, lastModified : "$$NOW" } }
  ]
)

Låt oss nu ta en titt på dokumentet igen:

db.dogs.find( { _id: 1 } ).pretty()

Resultat:

{
	"_id" : 1,
	"name" : "Fetch",
	"weight" : 30,
	"lastModified" : ISODate("2021-01-27T01:29:32.833Z")
}

lastModified fältet har lagts till med ett Date-objekt som innehåller aktuellt datum och tid.

Det finns också en CLUSTER_TIME systemvariabel som returnerar den aktuella tidsstämpeln, även om den bara är tillgänglig på replikuppsättningar och sönderdelade kluster.

Observera också att NOW och CLUSTER_TIME värdena förblir desamma under hela pipelinen.


  1. använder sträng för mongodb _id

  2. Infogar ett stort antal objekt i mongodb från nodejs

  3. Hur MongoDB skiljer sig från en SQL-databas

  4. Mongodb Healthcheck steg för steg