批量更新Mongodb中两个集合之间的所有引用

时间:2017-02-21 00:49:55

标签: mongodb

我在Mongo中有两个集合,raw_doc和unique_doc。 raw_doc定期接收大量数据的导入(+ 500k行)。 unique_doc包含raw_doc中找到的3个字段的每个唯一实例。

每个表中数据的简短示例

raw_doc

{Licence : "Free", Publisher : "Jeff's music", Name: "Music for all",Customer:"Dave", uniqueclip_id:12345},
{Licence : "Free", Publisher : "Jeff's music", Name: "Music for all",Customer:"Jim", uniqueclip_id:12345}

unique_doc

{_id:12345, Licence : "Free", Publisher : "Jeff's music", Name: "Music for all"}

我想添加对raw_doc的引用,将其链接到相应的unique_doc。我不能将unique_doc中的三个字段用作密钥,因为这些字段最终会被编辑,但raw_doc中的数据将保持不变(因此数据将不再匹配,但仍需要链接)。

我是否可以在Mongo中运行一个查询,它会从unique_doc中批量生成ID并将它们插入到相应的raw_docs中?

2 个答案:

答案 0 :(得分:0)

您可以尝试updateMany。请试试这个:

db.raw_doc.updateMany({uniqueclip_id:"12345"},{$set:{uniqueclip_id:"54321"}})

这将更新raw_doc中包含uniqueclip_id的所有文档:" 12345"并将其设置为" 54321"。

答案 1 :(得分:0)

预先生成我自己的id似乎是要走的路。我已设法将处理时间缩短到120k左右,达到500k行。