我想通过转换此表单中的所有文档来更新集合:
{
"_id" : "somestring i made",
"value" : {
"a" : 0.42361499999999996,
"b" : 3,
"c" : "foo",
"d" : "bar"
}
}
到此表单(带有新ID' s):
{
"_id" : ObjectId("77d987f6dsf6f76sa7676df"),
"a" : 0.42361499999999996,
"b" : 3,
"c" : "foo",
"d" : "bar"
}
所以基本上从对象中取出字段" value"并将id重置为真实的文档ID。
答案 0 :(得分:1)
首先获取文档,转换为所需格式,删除旧文档并再次插入修改后的文档。 像
这样的东西db.collection.find({}).forEach(function(doc){
var obj = { a : doc.value.a,
b : doc.value.b,
c : doc.value.c,
d : doc.value.d};
db.collection.remove(doc);
db.collection.insert(obj);
});