如何在不在 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);
我有一个带有 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);