2017-06-01 45 views
0

我有一個地圖領域的文件,與此類似:如何在沒有在MongoDB文檔中檢索地圖字段的情況下更新地圖字段?

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

如何更新(添加或更換一些鍵值對),而不檢索整個地圖的metaMap場?

例如,當帶參數{"k2":"new-v2","k3":"v3"}文檔變成了這個樣子更新:

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

我使用的是彈簧數據的MongoDB。

回答

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

It works.thank you – BlackJoker

相關問題