民间, 在moment.js文档中遇到困难。
record.lastModified = moment.utc().format();
返回:
2014-11-11T21:29:05+00:00
哪个好,它在UTC中......当我将它存储在Mongo中时,它会被存储为String
,而不是Date
对象类型,这就是我想要的。
我需要的是:
"lastModified" : ISODate("2014-11-11T15:26:42.965-0500")
但我需要它是一个原生的 javascript对象类型,并将其存储在Mongo中。现在,如果我存储上述内容,它将以字符串形式输入,而不是Date对象类型。
我用moment.js尝试了几乎所有的东西。他们的toDate()函数有效,但可以回到我当地的时区,而不是给我utc。
谢谢!
答案 0 :(得分:3)
保存Javascript Date
对象会导致ISODate
存储在Mongo中。
将ISO日期保存为Javascript String
将导致String
存储在Mongo中。
所以,这就是你想要的:record.lastModified = new Date(moment().format());
答案 1 :(得分:1)
不是理想的解决方案,但是通过monogo shell手动将其转换为ISODate对象,我获得了相同的结果。我们需要使用ISODate进行比较/查询来聚合结果,因此我们在运行聚合脚本之前运行此脚本。
使用moment()。format()。
插入本地时间字符串"createdDt" : "2015-01-07T17:07:43-05:00"`
使用以下命令转换为ISODate(UTC):
var cursor = db.collection.find({createdDt : {$exists : true}});
while (cursor.hasNext()){
var doc = cursor.next();
db.collection.update(
{_id : doc._id},
{$set: {createdDt : new ISODate(doc.createdDt)}})
}
结果
"createdDt" : ISODate("2015-01-07T22:07:43Z")"
请注意转换时间
T17:07:43-05:00
至T22:07:43Z
我找不到任何直接从JavaScript插入BSON ISODate格式(默认为UTC)的解决方案,插入新文档时,似乎可以通过pyMongo& amp;但是C#/ Java驱动程序。试图寻找可维护的解决方案