[英]How to update a collection based on another collection in MongoDB?
現在我得到兩個集合: coll01
和coll02
。
而coll01的結構是這樣的:
{
id: 01,
name: "xxx",
age: 30
}
和coll02的結構如下:
{
id: 01,
name: "XYZ"
gender: "male"
}
兩個集合中的兩個id字段都是索引。 這兩個集合中的文檔數量是相同的。
我想在傳統SQL中做的是:
update coll01, coll02
set coll01.name = coll02.name
where coll01.id = coll02.id
Mongodb不是關系數據庫,不支持join。 所以,你應該想一想,你真的需要mongodb用於你的目的嗎?
更新解決方案:您可以循環更新coll01
中的每個文檔:
db.coll01.find().forEach(function (doc1) {
var doc2 = db.coll02.findOne({ id: doc1.id }, { name: 1 });
if (doc2 != null) {
doc1.name = doc2.name;
db.coll01.save(doc1);
}
});
coll02
集合中id
字段的索引將減少循環內的find()
操作執行時間。 另外,請參閱服務器端JavaScript執行: 通過服務器上的mongo shell實例運行.js文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.