I MongoDB, $currentDate
operatorn ställer in värdet på ett fält till det aktuella datumet.
Det kan ställas in som antingen Datum eller en tidsstämpel typ. Standardinställningen är Datum .
$currentDate
är en uppdatering operatör, och kan endast användas vid uppdatering av dokument, inte när du infogar dem (även om den kan användas i upsert-operationer).
Exempel
Anta att vi har en samling som heter dogs
med följande dokument:
{
"_id" : 1,
"name" : "Wag",
"goodDog" : true,
"dateModified" : ISODate("2020-01-01T00:00:00Z")
}
Och vi vill göra en ändring i dokumentet. När vi gör ändringen måste vi uppdatera dateModified
fältet till datumet för ändringen.
Därför kan vi använda $currentDate
operatör för att ställa in datumet till det aktuella datumet. Vi kan göra något så här:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: true
},
$set: {
goodDog: false
}
}
)
Här använder vi dateModified: true
för att ställa in datumet med Datum typ (detta är ett förkortat sätt att ställa in det som ett datum typ).
Vi kan verifiera resultatet genom att titta på samlingen/dokumentet igen:
db.dogs.findOne()
Resultat:
{ "_id" : 1, "name" : "Wag", "goodDog" : false, "dateModified" : ISODate("2021-01-16T04:17:41.206Z") }
Vi kan se att dateModified
fältet har uppdaterats till det aktuella datumet (dvs. datumet/tiden då jag körde uppdateringen). goodDog
fältet har också uppdaterats enligt specifikation.
Tidsstämplar
Som standard $currentDate
använder Datum typ. Du kan alternativt ange typen i ett dokument. Därför kan du använda {$type: timestamp}
så att datumet uppdateras till en tidsstämpel BSON-typ.
Exempel:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: { $type: "timestamp" }
},
$set: {
goodDog: true
}
}
)
I det här fallet tillhandahöll vi ett dokument som specificerade tidsstämpeln typ.
Du kan också använda den här metoden för datumet typ (eller använd stenografimetoden som ses i föregående exempel).
Kontrollera samlingen:
db.dogs.findOne()
Resultat:
{ "_id" : 1, "name" : "Wag", "goodDog" : true, "dateModified" : Timestamp(1610771023, 1) }