W MongoDB $currentDate
operator ustawia wartość pola na bieżącą datę.
Może być ustawiony jako Data lub sygnaturę czasową rodzaj. Wartość domyślna to Data .
$currentDate
to aktualizacja operatora i może być używany tylko podczas aktualizacji dokumentów, a nie podczas ich wstawiania (chociaż może być używany w operacjach upsert).
Przykład
Załóżmy, że mamy kolekcję o nazwie dogs
z następującym dokumentem:
{
"_id" : 1,
"name" : "Wag",
"goodDog" : true,
"dateModified" : ISODate("2020-01-01T00:00:00Z")
}
I chcemy dokonać zmiany w dokumencie. Kiedy wprowadzamy zmianę, musimy zaktualizować dateModified
pole do daty zmiany.
Dlatego możemy użyć $currentDate
operatora, aby ustawić datę na datę bieżącą. Możemy zrobić coś takiego:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: true
},
$set: {
goodDog: false
}
}
)
Tutaj używamy dateModified: true
aby ustawić datę za pomocą Daty typ (jest to skrócony sposób ustawienia go jako Data typ).
Możemy zweryfikować wynik, ponownie patrząc na kolekcję/dokument:
db.dogs.findOne()
Wynik:
{ "_id" : 1, "name" : "Wag", "goodDog" : false, "dateModified" : ISODate("2021-01-16T04:17:41.206Z") }
Widzimy, że dateModified
pole zostało zaktualizowane do aktualnej daty (tj. daty/godziny uruchomienia aktualizacji). goodDog
pole zostało również zaktualizowane zgodnie z opisem.
sygnatury czasowe
Domyślnie $currentDate
używa Daty rodzaj. Alternatywnie można określić typ w dokumencie. Dlatego możesz użyć {$type: timestamp}
aby data została zaktualizowana do sygnatury czasowej Typ BSON.
Przykład:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: { $type: "timestamp" }
},
$set: {
goodDog: true
}
}
)
W tym przypadku udostępniliśmy dokument, w którym określono sygnaturę czasową rodzaj.
Możesz również użyć tej metody dla Daty wpisz (lub użyj metody skróconej, jak pokazano w poprzednim przykładzie).
Sprawdź kolekcję:
db.dogs.findOne()
Wynik:
{ "_id" : 1, "name" : "Wag", "goodDog" : true, "dateModified" : Timestamp(1610771023, 1) }