如何在不在 MongoDB 文档中检索地图字段的情况下更新它?

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

我有一个带有 Map 字段的文档,与此类似:

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

如何在不检索整个地图的情况下更新(添加或替换一些键值对)metaMap 字段?

例如用参数{"k2":"new-v2","k3":"v3"}更新时文档变成这样:

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

我正在使用 spring-data-mongodb.

    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);