V MongoDB, $currentDate
operátor nastaví hodnotu pole na aktuální datum.
Lze jej nastavit buď jako Datum nebo časové razítko typ. Výchozí nastavení je Datum .
$currentDate
je aktualizace operátor a lze jej použít pouze při aktualizaci dokumentů, nikoli při jejich vkládání (ačkoli jej lze použít při operacích upsert).
Příklad
Předpokládejme, že máme sbírku nazvanou dogs
s následujícím dokumentem:
{
"_id" : 1,
"name" : "Wag",
"goodDog" : true,
"dateModified" : ISODate("2020-01-01T00:00:00Z")
}
A my chceme udělat změnu v dokumentu. Když provedeme změnu, musíme aktualizovat dateModified
pole k datu změny.
Proto můžeme použít $currentDate
operátora pro nastavení data na aktuální datum. Můžeme udělat něco takového:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: true
},
$set: {
goodDog: false
}
}
)
Zde používáme dateModified: true
a nastavte datum pomocí Datum typ (toto je zkrácený způsob nastavení jako Datum typ).
Výsledek můžeme ověřit opětovným pohledem na sbírku/dokument:
db.dogs.findOne()
Výsledek:
{ "_id" : 1, "name" : "Wag", "goodDog" : false, "dateModified" : ISODate("2021-01-16T04:17:41.206Z") }
Vidíme, že dateModified
pole bylo aktualizováno na aktuální datum (tj. datum/čas, kdy jsem spustil aktualizaci). goodDog
pole bylo také aktualizováno, jak je uvedeno.
Časová razítka
Ve výchozím nastavení $currentDate
používá Datum typ. Alternativně můžete zadat typ v dokumentu. Proto můžete použít {$type: timestamp}
aby se datum aktualizovalo na časové razítko Typ BSON.
Příklad:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: { $type: "timestamp" }
},
$set: {
goodDog: true
}
}
)
V tomto případě jsme poskytli dokument, který uváděl časové razítko typ.
Tuto metodu můžete použít také pro Datum typu (nebo použijte zkrácenou metodu, jak je vidět v předchozím příkladu).
Zkontrolujte sbírku:
db.dogs.findOne()
Výsledek:
{ "_id" : 1, "name" : "Wag", "goodDog" : true, "dateModified" : Timestamp(1610771023, 1) }