我正在研究mongodb和node.js,我遇到了一个场景。
我批量插入大约2亿条记录的数据。在那些有一些字段保存为字符串,但实际上是日期。
有什么方法可以做我喜欢的事吗
db.collection.update({}, {$set: {dateField: new Date(dateField)}}, { multi: true })
日期为YYYY-MM-DD
格式
答案 0 :(得分:4)
MongoDB中目前没有允许您在更新操作中访问其他字段的内容的功能。你可以用任何语言做的唯一事情是迭代结果:
db.collection.find({}).forEach(function(doc) {
db.collection.update(
{ "_id": doc._id },
{"$set": { "dateField": new Date(doc.dateField) }}
);
});
现在,可以使用db.eval() 在服务器上运行它,但要注意,因为记录有很多危险,而且很可能对生产系统产生巨大影响。
如果您的其他选项失败,请确保更新尽可能靠近数据库(以网络术语)运行。
同样在你的上一篇文章中,你的日期并不完全符合你在这里提到的格式,并且有些条目在一个月或一天中只有一位数字。所以如果你还没有,那么你也必须处理它。