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

MongoDB $currentDate

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)
}