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