1

MongoDB外壳版本: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 时遇到了同样的问题。

谢谢

4

2 回答 2

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 来检查某物是某种类型还是从该类型“继承”。

于 2014-09-15T16:41:19.797 回答
0

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

db.my_date_collection.findOne().event_timestamp instanceof Date
于 2014-09-15T07:41:11.063 回答