0
这是一个后续行动平展嵌套的MongoDB文档
Flatten a nested object in MongoDB and rename
使用上所提到的答案后,一些数据类型得到接受和他们而一些投误差变平
can't convert undefined to object
例如: - 的文件在其上的数据出现故障: -
{
"id" : "1415304490",
"color" : {
"1391" : "Grey"
},
"name":"Random Name"
}
,我使用的corrosponding功能: -
db.suggestion.find().forEach(function(doc) {
var color;
Object.keys(doc.color).forEach(function(key) {
color = doc.color[key];
});
db.suggestion.update(
{ _id: doc._id },
{ $set:
{ color: color }
}
);
})
它跑20,000之前的文件,但现在没有这个文件上。
另外,如果我尝试通过在一个单一的ID运行它运行相同的代码,即
db.suggest.find({id:"12"})
它再次工作正常,因为它应该是它早前失败相同的文档。
我也试图创建一个解决,因为它是运行发现每一个文件,即
db.suggestion.find().forEach(function(dest) {
var id_temp=dest.id;
db.suggestion.find({id:id_temp}).forEach(function(doc) {
var color;
Object.keys(doc.color).forEach(function(key) {
color = doc.color[key];
});
db.suggestion.update(
{ _id: doc._id },
{ $set:
{ color: color }
}
);
})
})
它仍然失败。我很不确定代码的这种奇怪的行为。
我同意,但是为什么要把代码失败测试文档中我因为它有一个颜色字段 –
@AyushAggarwal它不会失败。我只是复制了你的文档,然后“再次”运行它。同样的结果,它完美地转换它。我的代码,而不是**你的**代码。我看到的问题是,您不是简单地应用您提供的代码。我认为不这样做的唯一原因是,实际上你的文件没有你所说的结构。但是在问题中提出的结构中,它工作得很好,并且当然会跳过任何没有颜色键转换的地方。这是你的问题中的错误,这就是解决的问题。 –
我正在对您的代码进行编辑,因为在robomongo中运行脚本时,它在ops = [... ops]中显示为“未知”中的错误。 。因此,我必须将其更改为解决方法,并使其更新为一个,而不是像您所做的那样批量更新。休息一下,我认为robomongo存在一个问题,我现在在shell中运行它。你建议的任何其他MongoDB GUI? –