【问题标题】:How to update the field value in multiple documents with help of another collection field value in MongoDB?如何借助 MongoDB 中的另一个集合字段值更新多个文档中的字段值?
【发布时间】:2022-12-20 20:25:10
【问题描述】:

需要在另一个集合的帮助下更新一个集合中的字段值

列 1:

{ field1: 1 },
{ field1: 2 },
{ field1: 1 }

列 2:

{
  field1: 1,
  field2: 234
},
{
  field1: 2,
  field2: 545
},
{
  field1: 1,
  field2: 234
}

这里如果coll1 field1 = col2 field1那么需要更新col1 field1: 234

Col1 输出:

{ field1: 234 },
{ field1: 545 },
{ field1: 234 }

我写了一个查询,但它只更新第一个文档。协助解决这个问题。

db.col1.find().forEach( function(doc1) {
  if(doc1.field1){
    var doc2 = dB.col2.findOne({"field1": doc1.field1});
    if(doc2) {
      doc1.field1 = doc2.field2;
      dB.col1.save(doc1);
    }
  }
});

谢谢。

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

    请尝试此查找

    db.col1.aggregate([
      {
        $lookup: {
          from: "col2",
          localField: "field1",
          foreignField: "field1",
          as: "joined_docs"
        }
      },
      {
        $addFields: {
          field1: { $arrayElemAt: ["$joined_docs.field2", 0] }
        }
      },
      {
        $replaceRoot: {
          newRoot: { $mergeObjects: ["$$ROOT", "$field1"] }
        }
      }
    ]).forEach(function(doc) {
      db.col1.save(doc);
    });
    

    【讨论】:

      猜你喜欢
      • 2021-06-24
      • 1970-01-01
      • 2016-12-26
      • 1970-01-01
      • 2011-02-06
      • 1970-01-01
      • 2011-04-27
      相关资源
      最近更新 更多