更新或创建(如果不存在)Mongo 3.0.4

时间:2016-12-15 16:25:14

标签: spring mongodb spring-data upsert

我的收藏品具有以下数据结构

{ "Shop": "123", "date": "28-05-2015", "Points": { "a": "1", "b": "2", "c": "3" } }

这里的商店和日期有唯一的索引,除了_id之外没有id, 因此,如果我只想更新b的值,并且如果记录匹配(基于帐户和日期)不存在,则应创建具有与b值相同的结构的新记录。 最重要的部分是它的批量操作意味着我需要每天为所有商店创建/更新记录,这些记录将每天为每个商店创建。所以如果记录不存在则更新点而不是创建它否则更新现有记录。我正在使用春天。 我尝试使用update with upsert true但它没有更新而是创建一个只有更新值的新记录。这是用给定更新点更新多个商店的最佳方法。

1 个答案:

答案 0 :(得分:2)

=SUMIFS(AL:AL,AK:AK,">="&TODAY()-5,AL:AL,"<="&TODAY())/5 

批量操作

//search a document that doesn't exist
Query query = new Query();
query.addCriteria(Criteria.where("points.b").is("some value"));

Update update = new Update();
update.set("b", some value);
update.set..... //set all needed fields else they go as null

mongoOperation.upsert(query, update, Shop.class);

Shop shopTestObj = mongoOperation.findOne(query, Shop.class);
System.out.println("shopTestObj - " + shopTestObj );