簡體   English   中英

如何根據MongoDB中的另一個集合更新集合?

[英]How to update a collection based on another collection in MongoDB?

現在我得到兩個集合: coll01coll02

而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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM