如何在Mongo中添加日期(作为日期数据类型)来自' Mongo命令提示符' &安培;来自' mongoimport'

时间:2014-09-15 07:21:27

标签: mongodb mongodb-query mongoimport

MongoDB shell版本:2.0.4

想要将日期作为'日期数据类型'来自mongo命令行。

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

有人可以帮我从mongo提示符中插入数据作为日期类型吗?

此外,有人可以告诉我如何将日期作为日期数据类型'来自tsv文件?因为我在从mongoimport加载tsv时遇到了同样的问题。

谢谢

2 个答案:

答案 0 :(得分: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来检查是某种类型的东西还是从该类型“继承”。

答案 1 :(得分:0)

你的代码很好。看看typeof doc。它可以返回更通用的类型。使用instanceof检查类型:

db.my_date_collection.findOne().event_timestamp instanceof Date