如何将单个字段从一个集合更新为其他集合单个字段

时间:2018-07-02 19:25:53

标签: mongodb loops mongoose foreach mongodb-query

我有2个集合,例如col1和col2。我在col1中有很多文档,每个文档都有100多个字段。我的col2仅具有与col1相同的文档数,并且两个集合中_id字段的值相同。我想将所有匹配的_id记录的产品字段从col2更新为col1。下面是我想在mongo上执行的SQL。

update coll1, coll2
set coll1.product = coll2.product
where coll1._id = coll2._id

我在下面尝试过,但实际上会将col1的所有字段(除了他们发现的字段都变为col2之外)都为空。那不是我想做的。我只想只更新一个字段,即“产品”。

db.col1.find().forEach(function (doc1) {
    var doc2 = db.col2.findOne({ _id: doc1._id }, { product: 1 });
    if (doc2 != null) {
        doc1.product = doc2.product;
        db.col1.save(doc1);
    }
});

请问您如何仅更新一个字段而不将所有其他字段都转换为null的帮助?

我也尝试过下面的操作,但是它仍然无法正常工作,并且不知如何在col1上不进行任何更新。

db.col1.find().forEach(function(doc) {
  db.col2.findOne({_id: doc._id}, function (item) {
    db.col1.update({_id: doc._id}, {$set: {product: item.product}})
  })
});

试图多次更改上述查询,但还是一样。

0 个答案:

没有答案