MongoDB fournit le NOW
variable système qui vous permet d'obtenir la valeur datetime actuelle lors de l'utilisation d'un pipeline d'agrégation.
Cela peut être utile lorsque vous souhaitez mettre à jour un document avec la date et l'heure actuelles.
À partir de MongoDB 4.2, les méthodes de mise à jour peuvent accepter un pipeline d'agrégation. Par conséquent, NOW
peut être utilisé comme alternative au $currentDate
opérateur de mise à jour de champ pour définir la date et l'heure actuelles lors de l'utilisation de l'une des méthodes de mise à jour.
Pour accéder au NOW
variable système, préfixez-la de deux signes dollar et entourez-la de guillemets ("$$NOW"
).
Exemple
Supposons que nous ayons une collection appelée dogs
qui contient le document suivant :
{ "_id" : 1, "name" : "Fetch", "weight" : 25 }
Voici un exemple d'utilisation de NOW
variable système lors de la mise à jour de ce document :
db.dogs.updateOne(
{ _id : 1 },
[
{ $set : { weight : 30, lastModified : "$$NOW" } }
]
)
Examinons à nouveau le document :
db.dogs.find( { _id: 1 } ).pretty()
Résultat :
{ "_id" : 1, "name" : "Fetch", "weight" : 30, "lastModified" : ISODate("2021-01-27T01:29:32.833Z") }
Le lastModified
champ a été ajouté avec un objet Date qui contient la date et l'heure actuelles.
Il y a aussi un CLUSTER_TIME
variable système qui renvoie l'horodatage actuel, bien que cela ne soit disponible que sur les jeux de réplicas et les clusters fragmentés.
Notez également que le NOW
et CLUSTER_TIME
les valeurs restent les mêmes tout au long du pipeline.