如何更新 Map 字段而不在 MongoDB 文档中检索它? [英] How do I update Map field without retrieve it in a MongoDB document?

查看:88
本文介绍了如何更新 Map 字段而不在 MongoDB 文档中检索它?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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

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

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

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

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",
         //...
      }
    }

我正在使用 spring-data-mongodb.

I'm using 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);

这篇关于如何更新 Map 字段而不在 MongoDB 文档中检索它?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆