2017-06-01 1 views
0

J'ai un document avec un champ de la carte, semblable à ceci:Comment mettre à jour le champ Carte sans le récupérer dans un document MongoDB?

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

Comment puis-je mettre à jour (ajouter ou remplacer une paire clé-valeur) le champ metaMap sans récupérer la carte entière?

Par exemple, lorsque la mise à jour avec le paramètre {"k2":"new-v2","k3":"v3"} le document se présente comme suit:

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

J'utilise ressort des données MongoDB.

Répondre

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

Cela fonctionne.Merci – BlackJoker