Dans MongoDB, le $currentDate
l'opérateur fixe la valeur d'un champ à la date actuelle.
Il peut être défini comme une date ou un horodatage taper. La valeur par défaut est Date .
$currentDate
est une mise à jour et ne peut être utilisé que lors de la mise à jour des documents, pas lors de leur insertion (bien qu'il puisse être utilisé dans les opérations d'upsert).
Exemple
Supposons que nous ayons une collection appelée dogs
avec le document suivant :
{
"_id" : 1,
"name" : "Wag",
"goodDog" : true,
"dateModified" : ISODate("2020-01-01T00:00:00Z")
}
Et nous voulons apporter une modification au document. Lorsque nous effectuons le changement, nous devons mettre à jour le dateModified
champ à la date du changement.
Par conséquent, nous pouvons utiliser le $currentDate
l'opérateur pour régler la date sur la date actuelle. Nous pouvons faire quelque chose comme ceci :
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: true
},
$set: {
goodDog: false
}
}
)
Ici, nous utilisons dateModified: true
pour régler la date à l'aide de la Date type (il s'agit d'une manière abrégée de le définir comme une date type).
Nous pouvons vérifier le résultat en examinant à nouveau la collection/le document :
db.dogs.findOne()
Résultat :
{ "_id" : 1, "name" : "Wag", "goodDog" : false, "dateModified" : ISODate("2021-01-16T04:17:41.206Z") }
Nous pouvons voir que le dateModified
le champ a été mis à jour à la date actuelle (c'est-à-dire la date/heure à laquelle j'ai exécuté la mise à jour). Le goodDog
le champ a également été mis à jour comme spécifié.
Horodatages
Par défaut $currentDate
utilise la date taper. Vous pouvez également spécifier le type dans un document. Par conséquent, vous pouvez utiliser {$type: timestamp}
afin que la date soit mise à jour avec un horodatage Type BSON.
Exemple :
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: { $type: "timestamp" }
},
$set: {
goodDog: true
}
}
)
Dans ce cas, nous avons fourni un document qui spécifiait l'horodatage taper.
Vous pouvez également utiliser cette méthode pour la date type (ou utilisez la méthode abrégée comme dans l'exemple précédent).
Vérifiez la collection :
db.dogs.findOne()
Résultat :
{ "_id" : 1, "name" : "Wag", "goodDog" : true, "dateModified" : Timestamp(1610771023, 1) }