En MongoDB, el $currentDate
El operador establece el valor de un campo en la fecha actual.
Se puede configurar como una fecha o una marca de tiempo tipo. El valor predeterminado es Fecha .
$currentDate
es una actualización operador, y solo se puede usar al actualizar documentos, no al insertarlos (aunque se puede usar en operaciones upsert).
Ejemplo
Supongamos que tenemos una colección llamada dogs
con el siguiente documento:
{
"_id" : 1,
"name" : "Wag",
"goodDog" : true,
"dateModified" : ISODate("2020-01-01T00:00:00Z")
}
Y queremos hacer un cambio en el documento. Cuando hacemos el cambio, necesitamos actualizar el dateModified
campo hasta la fecha del cambio.
Por lo tanto, podemos usar el $currentDate
operador para establecer la fecha a la fecha actual. Podemos hacer algo como esto:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: true
},
$set: {
goodDog: false
}
}
)
Aquí, usamos dateModified: true
para establecer la fecha usando la Fecha tipo (esta es una forma abreviada de configurarlo como una Fecha tipo).
Podemos verificar el resultado mirando de nuevo la colección/documento:
db.dogs.findOne()
Resultado:
{ "_id" : 1, "name" : "Wag", "goodDog" : false, "dateModified" : ISODate("2021-01-16T04:17:41.206Z") }
Podemos ver que el dateModified
el campo se ha actualizado a la fecha actual (es decir, la fecha/hora en que ejecuté la actualización). El goodDog
el campo también se ha actualizado como se especifica.
Marcas de tiempo
Por defecto $currentDate
utiliza la fecha tipo. También puede especificar el tipo en un documento. Por lo tanto, puede usar {$type: timestamp}
para que la fecha se actualice a una marca de tiempo tipo BSON.
Ejemplo:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: { $type: "timestamp" }
},
$set: {
goodDog: true
}
}
)
En este caso, proporcionamos un documento que especificaba la marca de tiempo tipo.
También puede usar este método para la Fecha escriba (o use el método abreviado como se ve en el ejemplo anterior).
Consulta la colección:
db.dogs.findOne()
Resultado:
{ "_id" : 1, "name" : "Wag", "goodDog" : true, "dateModified" : Timestamp(1610771023, 1) }