No MongoDB, o
$currentDate
operador define o valor de um campo para a data atual. Pode ser definido como uma Data ou um carimbo de data e hora tipo. O padrão é Data .
$currentDate
é uma atualização operador, e só pode ser usado ao atualizar documentos, não ao inseri-los (embora possa ser usado em operações de upsert). Exemplo
Suponha que tenhamos uma coleção chamada
dogs
com o seguinte documento:{
"_id" : 1,
"name" : "Wag",
"goodDog" : true,
"dateModified" : ISODate("2020-01-01T00:00:00Z")
}
E queremos fazer uma alteração no documento. Quando fazemos a alteração, precisamos atualizar o
dateModified
campo até a data da alteração. Portanto, podemos usar o
$currentDate
operador para definir a data para a data atual. Podemos fazer algo assim:db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: true
},
$set: {
goodDog: false
}
}
)
Aqui, usamos
dateModified: true
para definir a data usando Data tipo (esta é uma forma abreviada de defini-lo como uma Data tipo). Podemos verificar o resultado olhando a coleção/documento novamente:
db.dogs.findOne()
Resultado:
{ "_id" : 1, "name" : "Wag", "goodDog" : false, "dateModified" : ISODate("2021-01-16T04:17:41.206Z") }
Podemos ver que o
dateModified
campo foi atualizado para a data atual (ou seja, a data/hora em que executei a atualização). O goodDog
campo também foi atualizado conforme especificado. Carimbos de data e hora
Por padrão
$currentDate
usa a Data tipo. Você também pode especificar o tipo em um documento. Portanto, você pode usar {$type: timestamp}
para que a data seja atualizada para um timestamp tipo BSON. Exemplo:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: { $type: "timestamp" }
},
$set: {
goodDog: true
}
}
)
Nesse caso, fornecemos um documento que especificava o timestamp tipo.
Você também pode usar este método para a Data type (ou use o método abreviado como visto no exemplo anterior).
Confira a coleção:
db.dogs.findOne()
Resultado:
{ "_id" : 1, "name" : "Wag", "goodDog" : true, "dateModified" : Timestamp(1610771023, 1) }