MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Variable d'agrégation MongoDB NOW

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.