MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB NOW Variabile di aggregazione

MongoDB fornisce il NOW variabile di sistema che consente di ottenere il valore datetime corrente quando si utilizza una pipeline di aggregazione.

Questo può essere utile quando vuoi aggiornare un documento con la data e l'ora corrente.

A partire da MongoDB 4.2, i metodi di aggiornamento possono accettare una pipeline di aggregazione. Pertanto, NOW può essere utilizzato come alternativa a $currentDate operatore di aggiornamento sul campo per impostare la data e l'ora corrente quando si utilizza uno dei metodi di aggiornamento.

Per accedere a NOW variabile di sistema, anteponila con due segni di dollaro e racchiudila tra virgolette ("$$NOW" ).

Esempio

Supponiamo di avere una collezione chiamata dogs che contiene il seguente documento:

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

Ecco un esempio di utilizzo di NOW variabile di sistema durante l'aggiornamento di quel documento:

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

Ora diamo un'occhiata di nuovo al documento:

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

Risultato:

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

L'lastModified è stato aggiunto un campo con un oggetto Date che contiene la data e l'ora correnti.

C'è anche un CLUSTER_TIME variabile di sistema che restituisce il timestamp corrente, sebbene sia disponibile solo su set di repliche e cluster partizionati.

Nota anche che il NOW e CLUSTER_TIME i valori rimangono gli stessi per tutta la pipeline.