Reputation: 3191
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.
Upvotes: 0
Views: 1780
Reputation: 27078
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);
Upvotes: 1