How do I update Map field without retrieve it in a MongoDB document?

浪子不回头ぞ 提交于 2019-12-12 04:46:54

问题


I have a document with an Map field, similar to this:

{ 
  "_id" : "....",
  "metaMap" : {
     "k1":"v1",
     "k2":"v2",
     //...
  }
}

How can I update(add or replace some key-value pair) the metaMap field without retrieve the whole map?

For example,when update with the parameter {"k2":"new-v2","k3":"v3"} the document become like this:

{ 
      "_id" : "....",
      "metaMap" : {
         "k1":"v1",
         "k2":"new-v2",
         "k3":"v3",
         //...
      }
    }

I'm using spring-data-mongodb.


回答1:


    DBObject queryObject = new BasicDBObject("someUniqueField", "value");
    BasicDBObject newMap = new BasicDBObject("metaMap.k2", "new-v2");
    newMap.put("metaMap.k3", "v3");
    DBObject updateObject = new BasicDBObject("$set", newMap);

    mongoTemplate.getCollection("collectionName").update(queryObject, updateObject);


来源:https://stackoverflow.com/questions/44301887/how-do-i-update-map-field-without-retrieve-it-in-a-mongodb-document

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!