我有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}})
})
});
试图多次更改上述查询,但还是一样。