Widziałem użycie ciągów znaków, całkowitych znaczników czasu i obiektów daty i godziny mongo.
177
Najlepszym sposobem jest przechowywanie natywnych obiektów JavaScript Date , które są mapowane na natywne obiekty Date BSON .
> db.test.insert({date: ISODate()})
> db.test.insert({date: new Date()})
> db.test.find()
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:42.389Z") }
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:57.240Z") }
Typ natywny obsługuje całą gamę przydatnych metod , których można używać na przykład w zadaniach redukcji map.
Jeśli potrzebujesz, możesz łatwo przekonwertować Date
obiekty na i ze znaczników czasu systemu Unix 1) , używając odpowiednio getTime()
metody i Date(milliseconds)
konstruktora.
1) Ściśle mówiąc, uniksowy znacznik czasu jest mierzony w sekundach . Obiekt JavaScript Date mierzy w milisekundach od epoki Uniksa.
389
i240
są milisekundami sygnatury czasowej. ZnakZ
w formacie ciągu informuje MongoDB, że podana sygnatura czasowa jest w czasie UTC. Jeśli później go przeczytasz, Twoja aplikacja prawdopodobnie przekonwertuje ją na lokalną strefę czasową, sprawiając wrażenie, że czas się zmienił. Ale czas jest wciąż ten sam, jest interpretowany tylko z innej perspektywy strefy czasowej. Na przykład12:50:42Z
i13:50:42+01:00
reprezentuj ten sam moment w czasie.21:56:03+01:00
teraz w CET i wstawisznew Date()
, to MongoDB może reprezentować to jako20:56:03Z
. Ale kiedy ponownie go przeczytasz i wyświetlisz w aplikacji przy użyciu lokalnych ustawień strefy czasowej (CET), zostanie21:56:03
ponownie odczytany .Jeden datownik znajduje się już w obiekcie _id, reprezentującym czas wstawiania
Więc jeśli potrzebujesz czasu wstawiania, już tam jest:
Zaloguj się do powłoki mongodb
Utwórz bazę danych, wstawiając elementy
Niech ta baza danych będzie tą, na której teraz jesteśmy
Przywróć wiersze:
Pobierz każdy wiersz w formacie rrrr-MM-dd HH: mm: ss:
Jeśli ta ostatnia linijka cię zmyli, mam tutaj przewodnik, jak to działa: https://stackoverflow.com/a/27613766/445131
źródło
_id
?_id.getTimestamp()
.