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.