Відповіді:
Найкращий спосіб - це зберігання нативних об’єктів дати JavaScript , які відображають на 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") }
Рідний тип підтримує цілий ряд корисних методів поза рамками, які ви можете використовувати, наприклад, у ваших завданнях для зменшення карти.
Якщо вам потрібно, ви можете легко перетворити Date
об'єкти в часові позначки Unix та з них 1) , використовуючи відповідно getTime()
метод та Date(milliseconds)
конструктор.
1) Строго кажучи, часова мітка Unix вимірюється в секундах . Об'єкт JavaScript Дата вимірюється в мілісекундах з епохи Unix.
389
і 240
є. Z
У форматі рядки говорить MongoDB , що мітка часу Наданий в UTC. Якщо потім ви прочитаєте його назад, ваша програма, ймовірно, перетворить його у ваш локальний часовий пояс, завдяки чому здається, що час змінився. Але час все одно той самий, його трактують лише з іншого погляду часового поясу. Наприклад 12:50:42Z
і 13:50:42+01:00
представляють той самий момент у часі.
21:56:03+01:00
зараз у CET та ви вставляєте new Date()
, то MongoDB може представляти його як 20:56:03Z
. Але коли ви прочитаєте його назад і покажете його у вашій програмі за допомогою локальних налаштувань часового поясу (CET), він 21:56:03
знову прочитає .
Отже, якщо час вставки - це те, що вам потрібно, воно вже є:
Увійдіть до оболонки 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
Створіть свою базу даних, вставивши елементи
> db.penguins.insert({"penguin": "skipper"})
> db.penguins.insert({"penguin": "kowalski"})
>
Давайте зробимо цю базу такою, якою ми зараз є
> use penguins
switched to db penguins
Поверніть рядки назад:
> db.penguins.find()
{ "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
{ "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" }
Отримайте кожен рядок у yyyy-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
Якщо цей останній лайнер вас бентежить, я ознайомлюся з тим, як це працює тут: https://stackoverflow.com/a/27613766/445131
_id
?
_id.getTimestamp()
.