我需要将数据从一个字段填充到同一个集合中的多个字段。例如: 目前我的文件如下:
{ _id: 1, temp_data: {temp1: [1,2,3], temp2: "foo bar"} }
我想在同一个集合中填入两个不同的字段,如下所示:
{ _id: 1, temp1: [1,2,3], temp2: "foo bar" }
我要迁移十亿个文档。请建议我更新所有10亿份文件的有效方法吗?
答案 0 :(得分:2)
用您喜欢的语言编写一个贯穿所有文档的工具,迁移它们并将它们存储在新的数据库中。
一些提示:
答案 1 :(得分:-1)
我在这里为您查询,使用以下查询来迁移您的数据
db.collection.find().forEach(function(myDoc) {
db.collection_new.update(
{_id: myDoc._id},
{
$unset: {'temp_data': 1},
$set: {
'temp1': myDoc.temp_data.temp1,
'temp2': myDoc.temp_data.temp2
}
},
{ upsert: true }
)
});
要了解有关foreach光标的更多信息,请访问link
需要 $ limit 和 $ skip 运算符才能批量迁移数据。在更新查询中,我已经使用了upsert beacuse,如果已经存在,它将更新否则插入的条目将是新的。
由于