MongoDB leverer NOW
systemvariabel, der giver dig mulighed for at få den aktuelle datetime-værdi, når du bruger en aggregeringspipeline.
Dette kan være nyttigt, når du vil opdatere et dokument med den aktuelle dato og klokkeslæt.
Fra MongoDB 4.2 kan opdateringsmetoder acceptere en aggregeringspipeline. Derfor NOW
kan bruges som et alternativ til $currentDate
feltopdateringsoperatør til indstilling af den aktuelle dato og klokkeslæt, når du bruger en af opdateringsmetoderne.
For at få adgang til NOW
systemvariabel, præfiks den med to dollartegn og omslut den i anførselstegn ("$$NOW"
).
Eksempel
Antag, at vi har en samling kaldet dogs
der indeholder følgende dokument:
{ "_id" : 1, "name" : "Fetch", "weight" : 25 }
Her er et eksempel på brug af NOW
systemvariabel ved opdatering af det pågældende dokument:
db.dogs.updateOne(
{ _id : 1 },
[
{ $set : { weight : 30, lastModified : "$$NOW" } }
]
)
Lad os nu tage et kig på dokumentet igen:
db.dogs.find( { _id: 1 } ).pretty()
Resultat:
{ "_id" : 1, "name" : "Fetch", "weight" : 30, "lastModified" : ISODate("2021-01-27T01:29:32.833Z") }
lastModified
felt er blevet tilføjet med et Dato-objekt, der indeholder den aktuelle dato og klokkeslæt.
Der er også en CLUSTER_TIME
systemvariabel, der returnerer det aktuelle tidsstempel, selvom dette kun er tilgængeligt på replikasæt og sharded clusters.
Bemærk også, at NOW
og CLUSTER_TIME
værdierne forbliver de samme gennem hele pipelinen.