在一个命令中更新与id列表匹配的所有文档

时间:2016-12-07 04:21:02

标签: mongodb mongodb-query

有没有办法只用一个命令更新匹配id列表的所有文档。

目前我必须循环每个id才能更新

var ids = [
  "8007068113729",
  "8007068502622",
  "8007068505821",
  "0825646209804",
  "0880319084614",
  "4260041334885"
]

ids.forEach(function(i){
    db.listing.update({_id:i},{$set:{Supplier:'S'}});
});

2 个答案:

答案 0 :(得分:3)

只需使用updateMany方法和$in运算符。

var ids = [
  "8007068113729",
  "8007068502622",
  "8007068505821",
  "0825646209804",
  "0880319084614",
  "4260041334885"
]

db.listing.updateMany({ "_id": { "$in": ids }}, { "$set": { "Supplier": "S" }});

答案 1 :(得分:1)

我认为你可以使用带标志的 $ in 运算符:

var ids = [
  "8007068113729",
  "8007068502622",
  "8007068505821",
  "0825646209804",
  "0880319084614",
  "4260041334885"
]

db.listing.update({_id:{ $in: ids}},{$set:{Supplier:'S'}}, {multi: true});

希望有所帮助!