MongoDB zapewnia NOW
zmienna systemowa, która pozwala uzyskać bieżącą wartość daty i godziny podczas korzystania z potoku agregacji.
Może to być przydatne, gdy chcesz zaktualizować dokument z bieżącą datą i godziną.
Począwszy od MongoDB 4.2, metody aktualizacji mogą akceptować potok agregacji. Dlatego NOW
może być używany jako alternatywa dla $currentDate
operator aktualizacji pola do ustawiania bieżącej daty i godziny podczas korzystania z dowolnej metody aktualizacji.
Aby uzyskać dostęp do NOW
zmienna systemowa, poprzedź ją dwoma znakami dolara i otocz w cudzysłowie ("$$NOW"
).
Przykład
Załóżmy, że mamy kolekcję o nazwie dogs
który zawiera następujący dokument:
{ "_id" : 1, "name" : "Fetch", "weight" : 25 }
Oto przykład użycia NOW
zmienna systemowa podczas aktualizacji tego dokumentu:
db.dogs.updateOne(
{ _id : 1 },
[
{ $set : { weight : 30, lastModified : "$$NOW" } }
]
)
Teraz spójrzmy ponownie na dokument:
db.dogs.find( { _id: 1 } ).pretty()
Wynik:
{ "_id" : 1, "name" : "Fetch", "weight" : 30, "lastModified" : ISODate("2021-01-27T01:29:32.833Z") }
lastModified
zostało dodane pole z obiektem Date zawierającym aktualną datę i godzinę.
Jest też CLUSTER_TIME
zmienna systemowa, która zwraca bieżący znacznik czasu, chociaż jest dostępna tylko w zestawach replik i klastrach podzielonych na fragmenty.
Pamiętaj również, że NOW
i CLUSTER_TIME
wartości pozostają takie same w całym potoku.