Mongodb 如何在Spring data Mongo DB Mongo存储库中删除列表

Mongodb 如何在Spring data Mongo DB Mongo存储库中删除列表,mongodb,spring-data,mongorepository,Mongodb,Spring Data,Mongorepository,我有一个产品,而这个产品有多个国家/地区。因此我想在mongo存储库中删除相应的国家/地区。那么我如何从spring data mongodb存储库中删除这些国家/地区呢。 请在下面找到我的JSON { "_id" : ObjectId("565e0e1758da2b685eef727f"), "offeringId" : "PMRS674913", "offeringType" : "FEATURE", "service" : "HBOGO", "countries" : [

我有一个产品,而这个产品有多个国家/地区。因此我想在mongo存储库中删除相应的国家/地区。那么我如何从spring data mongodb存储库中删除这些国家/地区呢。 请在下面找到我的JSON

{ "_id" : ObjectId("565e0e1758da2b685eef727f"),
  "offeringId" : "PMRS674913",
  "offeringType" : "FEATURE",
  "service" : "HBOGO",
  "countries" : [
     {
       "country" : "OTT",
       "isoCode" : "124",
       "startDate" : "2015-01-01T00:00:00.000-05:00",
       "endDate" : "2015-01-31T00:00:00.000-05:00"
     },
     {
       "country" : "United States",
       "isoCode" : " 456",
       "startDate" : "2015-01-01T00:00:00.000-05:00",
       "endDate" : "2015-01-31T0000:00.000-05:00"
     }
   ]
}

您可以使用以下查询来执行此操作:

db.collection.update(
    { "countries" : { $elemMatch : { "country" : "OTT" } } } ,
    { $pull : { "countries" : { "country" : "OTT" } } },
    { multi : true }
)
Spring
中,必须使用以下语法:

Query query = new Query();
query.addCriteria(Criteria.where("countries")
        .elemMatch(Criteria.where("country").is("United States")));

Update update = new Update();
update.pull("countries", new BasicDBObject("country", "United States"));

mongoTemplate.updateMulti(query, update, collection);

你可能想要阅读,这大大提高了获得有用答案的可能性。您可能会发现的优秀文章很有帮助。如果列表中多次出现同一个国家,请使用
{multi:true}
。感谢您的回复。但是我想根据国家名称从国家中删除整个国家对象。您是指整个
国家
键吗?更新后您能提供我想要的最终输出吗?您好,下面是我实际的json。{“_id”:ObjectId(“565e0e1758da2b685eef727f”),“offeringId:“PMRS674913”,“offeringType:“FEATURE”,“service:”HBOGO”,“countries:“[{“country:”OTT”,“isoCode:”124”,“startDate:”“2015-01-01T00:00:00.000-05:00”,“结束日期”:“2015-01-31T00:00:00.000-05:00”},{“国家”:“美国”,“等时码”:“456”,“起始日期”:“2015-01-01T00:00:00.000-05:00”,“结束日期”:“2015-01-31T0000:00.000-05:00”}删除国家OTT后,最终输出将是{(“565e0e1758da2b685eef727f”),“报价ID”:“PMRS674913”,“报价类型”:“功能”,“服务”:“HBOGO”,“国家”:[{“国家”:“美国”,“等码”:“456”,“起始日期”:“2015-01-01T00:00:00.000-05:00”,“结束日期”:“2015-01-31T0000:00.000-05:00”}]