如何更新 Map 字段而不在 MongoDB 文档中检索它? [英] How do I update Map field without retrieve it in a MongoDB document?
本文介绍了如何更新 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屋!
查看全文