MongoDB java-如何删除等于某个值的数组元素?

MongoDB java-如何删除等于某个值的数组元素?,java,mongodb,Java,Mongodb,我是一个mongoDB noob,我正在努力解决一个问题。假设我有以下结构: { "id": "1", "type": 2, "shops": ["1000","2000","3000"] }, { "id": "2", "type": 2, "shops": ["1000","4000","5000"] } 如何删除每个等于(例如1000)的店铺,以便生成的db记录为: { "id": "1", "type": 2,

我是一个mongoDB noob,我正在努力解决一个问题。假设我有以下结构:

{
    "id": "1",
    "type": 2,
    "shops": ["1000","2000","3000"]
  },
  {
    "id": "2",
    "type": 2,
    "shops": ["1000","4000","5000"]
  }
如何删除每个等于(例如1000)的店铺,以便生成的db记录为:

{
    "id": "1",
    "type": 2,
    "shops": ["2000","3000"]
  },
  {
    "id": "2",
    "type": 2,
    "shops": ["4000","5000"]
  }

非常感谢

您可以使用以下命令执行类似的操作:

db.shopCollection.update(
    { },
    { $pull: { "shops": { "idShop", 1000 } } },
    { multi: true }
)
假设
shopCollection
作为您的收藏名称

编辑:要在java中使用相同的功能,您可以按照中提到的答案进行操作。在java中,类似以下内容:

Bson query = new org.bson.Document();
Bson fields = new org.bson.Document().append("shops", new org.bson.Document().append("$idShop",1000));
Bson update = new org.bson.Document("$pull",fields);
yourCollection.updateMany(query, update);
Edit2:对于共享的更新JSON值,您可以将java代码更新为:

Bson filter = Filters.in("shops","1000");
Bson query = Filters.elemMatch("shops", filter);
Bson update = new org.bson.Document("$pull", filter); 

campaignsCollection.updateMany(query, update);` 

非常感谢你这么快回答。我通过调用getCollection(“shops”)获得集合,但找不到“update”方法,只有updateOne和updateMany。@Poider12请用访问集合所用的java代码更新问题。还要注意,我共享的查询是针对mongo shell的,而不是Java。您可以用java中的
updateMany
来更新文档列表。@Poider12是这样的地方。更新了答案,也请重新检查问题中更新的Json。@Poider12在这种情况下,您是否可以使用正确的Json更新问题。将从中推断出您的对象。@Poider12再次编辑了答案,这可能会对您有所帮助。您还可以分享您用于文档的java模型。更新的json
“shops”:[0:4000 1:5000]
对我来说似乎不正确。列表中应包含一些对象,以包含这些键和值。