【发布时间】:2017-06-07 15:19:18
【问题描述】:
在 MongoDB 中,我有一个文档,其中包含一个名为“日期”的字段,并且位于数组中。
{
"_id" : ObjectId("587627a2125a730f78a20859"),
"data" : [
{
"Number" : "359983007479839",
"date" : "2016-02-10T21:56:33.000Z"
}
]
之后我运行这个脚本:
db.dummy.find().forEach(function(doc){
doc.mongodbdate = ISODate(doc.mongodbdate);
db.dummy.save(doc);
})
它给了我下面的输出;
{
"_id" : ObjectId("588724ba2746360c04a51e4b"),
"data" : [
{
"Number" : "359983007479839",
"mongodbdate" : "2016-02-12T18:01:06.000Z"
}
],
"mongodbdate" : ISODate("2017-01-24T15:26:24.537+05:30")
}
我也试过这个:
var bulk = db.dummy.initializeUnorderedBulkOp(),
count = 0;
db.dummy.find().forEach(function(doc) {
bulk.find({ "_id": doc._id }).updateOne({
"$set": { "mongodbdate": ISODate(doc.mongodbdate) }
})
count++;
if (count % 1000 == 0) {
// Execute per 1000 operations and re-init
bulk.execute();
bulk = db.dummy.initializeUnorderedBulkOp();
}
})
它抛出错误: “消息”:“无效的 ISO 日期”
我想将该字符串日期转换为 ISO 日期。我已经更改了一些代码,但它添加了 ISO 格式的新日期,但我想更新已经可用的日期,无需插入新日期。 我也在 stackoverflow 上得到了一个解决方案,但那是在我的文档中添加新字段,我认为这是因为数组,我想更新我现有的。
【问题讨论】: