2014-09-15 2 views
1
версия

MongoDB оболочки: 2.0.4Как вставить Дата (как дата ТипДанных) В Монго из «Монго Command Prompt» и С «» mongoimport

Хотите вставить дату как «дата типа данных» из командной строки Монго.

db.my_date_collection.insert(
{"user_id" : 91, 
"event_timestamp" :new Date("09-AUG-12 05.30.28.402000 AM") 
}); 

Выше запроса добавить запись, но дата изменения от "09-AUG-12 05.30.28.402000 AM" в "1970-01-01T00: 00: 00Z"

> db.my_date_collection.findOne() 
{ 
    "_id" : ObjectId("54168ddc289a635d725d86fb"), 
    "user_id" : 91, 
    "event_timestamp" : ISODate("1970-01-01T00:00:00Z") 
} 

Кроме того, он также Ждут» т сохранить «дата» данные как дата «тип данных»

typeof db.my_date_collection.findOne().event_timestamp; 


object 

Может кто-то помочь мне вставить данные как тип даты из Монго подскажете?

Кроме того, может кто-нибудь сказать мне, как вставить тип данных типа даты в виде даты из файла tsv? поскольку у меня такая же проблема при загрузке tsv из mongoimport.

Thanks

+0

Mongo использует javascript, а формат даты, о которой вы упомянули, недействителен. – Ravi

ответ

1

Дата не соответствует допустимому формату, который обрабатывается конструктором даты. Попробуйте эквивалентное значение в допустимом формате (я принимаю время UTC, так как вы не указали часовой пояс):

«09-AUG-12 05.30.28.402000 AM« => »2012-08-09T05: 30 : 28,402"

> var my_date = ISODate("2012-08-09T05:30:28.402") 
> db.my_dates.insert({ "x" : my_date }) 
> var doc = db.my_dates.findOne() 
> doc.x instanceof Date 
true 

возвращаемое значение имеет тип Date, но Javascript не объектно-ориентированный язык, так что смысл этого и как определить, если что-то из Date типа отличаются, чем вы ожидали, судя по всему. Использовать instanceof для проверки является что-то определенного типа или «наследует» от этого типа.

+0

спасибо за помощь , ваше решение (изменение в моем формате даты ввода) отлично работало для меня. – user3706888

0

Ваш код хорош. Взгляните на typeof doc. Он может возвращать более общий тип. Используйте экземпляр для проверки типа:

db.my_date_collection.findOne().event_timestamp instanceof Date 
+0

Спасибо Piotr Еще один вопрос, почему моя дата «09-AUG-12 05.30.28.402000 AM« сохранена как «1970-01-01T00: 00: 00Z»? как я могу это исправить? – user3706888

+0

новая дата («09-AUG-12 05: 30: 28.402000 AM») должна сделать вещь. Пожалуйста, отметьте мой ответ как полезный. –

+0

спасибо за ответ Piotr, но «новая дата (« 09-AUG-12 05: 30: 28.402000 AM »)« дал мне те же результаты »ISODate (« 1970-01-01T00: 00: 00Z »)« – user3706888