In MongoDB, il $currentDate
l'operatore imposta il valore di un campo sulla data corrente.
Può essere impostato come Data o un timestamp genere. L'impostazione predefinita è Data .
$currentDate
è un aggiornamento operatore e può essere utilizzato solo durante l'aggiornamento dei documenti, non durante l'inserimento degli stessi (sebbene possa essere utilizzato nelle operazioni di inserimento).
Esempio
Supponiamo di avere una collezione chiamata dogs
con il seguente documento:
{
"_id" : 1,
"name" : "Wag",
"goodDog" : true,
"dateModified" : ISODate("2020-01-01T00:00:00Z")
}
E vogliamo apportare una modifica al documento. Quando apportiamo la modifica, dobbiamo aggiornare dateModified
campo alla data della modifica.
Pertanto, possiamo utilizzare il $currentDate
operatore per impostare la data sulla data corrente. Possiamo fare qualcosa del genere:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: true
},
$set: {
goodDog: false
}
}
)
Qui utilizziamo dateModified: true
per impostare la data utilizzando la Data digita (questo è un modo abbreviato per impostarlo come Data tipo).
Possiamo verificare il risultato guardando di nuovo la collezione/documento:
db.dogs.findOne()
Risultato:
{ "_id" : 1, "name" : "Wag", "goodDog" : false, "dateModified" : ISODate("2021-01-16T04:17:41.206Z") }
Possiamo vedere che il dateModified
il campo è stato aggiornato alla data corrente (ovvero la data/ora in cui ho eseguito l'aggiornamento). Il goodDog
anche il campo è stato aggiornato come specificato.
Data e ora
Per impostazione predefinita $currentDate
utilizza la Data genere. In alternativa puoi specificare il tipo in un documento. Pertanto, puoi utilizzare {$type: timestamp}
in modo che la data venga aggiornata con un timestamp Tipo BSON.
Esempio:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: { $type: "timestamp" }
},
$set: {
goodDog: true
}
}
)
In questo caso, abbiamo fornito un documento che specificava il timestamp genere.
Puoi anche utilizzare questo metodo per la Data digitare (o utilizzare il metodo abbreviato come mostrato nell'esempio precedente).
Controlla la collezione:
db.dogs.findOne()
Risultato:
{ "_id" : 1, "name" : "Wag", "goodDog" : true, "dateModified" : Timestamp(1610771023, 1) }