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