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.