Odpowiedzi:
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
i 240
są milisekundami sygnatury czasowej. Znak Z
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ład 12:50:42Z
i 13:50:42+01:00
reprezentuj ten sam moment w czasie.
21:56:03+01:00
teraz w CET i wstawisz new Date()
, to MongoDB może reprezentować to jako 20:56:03Z
. Ale kiedy ponownie go przeczytasz i wyświetlisz w aplikacji przy użyciu lokalnych ustawień strefy czasowej (CET), zostanie 21:56:03
ponownie odczytany .
Więc jeśli potrzebujesz czasu wstawiania, już tam jest:
Zaloguj się do powłoki mongodb
ubuntu@ip-10-0-1-223:~$ mongo 10.0.1.223
MongoDB shell version: 2.4.9
connecting to: 10.0.1.223/test
Utwórz bazę danych, wstawiając elementy
> db.penguins.insert({"penguin": "skipper"})
> db.penguins.insert({"penguin": "kowalski"})
>
Niech ta baza danych będzie tą, na której teraz jesteśmy
> use penguins
switched to db penguins
Przywróć wiersze:
> db.penguins.find()
{ "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
{ "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" }
Pobierz każdy wiersz w formacie rrrr-MM-dd HH: mm: ss:
> db.penguins.find().forEach(function (doc){ d = doc._id.getTimestamp(); print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds()) })
2014-12-23 3:4:41
2014-12-23 3:4:53
Jeśli ta ostatnia linijka cię zmyli, mam tutaj przewodnik, jak to działa: https://stackoverflow.com/a/27613766/445131
_id
?
_id.getTimestamp()
.