在mongodb中将字符串更新为Date对象

时间:2014-02-26 07:06:27

标签: javascript node.js mongodb

我正在研究mongodb和node.js,我遇到了一个场景。

我批量插入大约2亿条记录的数据。在那些有一些字段保存为字符串,但实际上是日期。

有什么方法可以做我喜欢的事吗

db.collection.update({}, {$set: {dateField: new Date(dateField)}}, { multi: true })

日期为YYYY-MM-DD格式

1 个答案:

答案 0 :(得分:4)

MongoDB中目前没有允许您在更新操作中访问其他字段的内容的功能。你可以用任何语言做的唯一事情是迭代结果:

db.collection.find({}).forEach(function(doc) { 
    db.collection.update(
        { "_id": doc._id }, 
        {"$set": { "dateField": new Date(doc.dateField) }}
    );
});

现在,可以使用db.eval() 在服务器上运行它,但要注意,因为记录有很多危险,而且很可能对生产系统产生巨大影响。

如果您的其他选项失败,请确保更新尽可能靠近数据库(以网络术语)运行。

同样在你的上一篇文章中,你的日期并不完全符合你在这里提到的格式,并且有些条目在一个月或一天中只有一位数字。所以如果你还没有,那么你也必须处理它。