2017-06-01 8 views
0

私はこれに似て地図フィールドを持つ文書を、持っている:MongoDBドキュメントでマップフィールドを取得せずにマップフィールドを更新するにはどうすればよいですか?

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

は、どのように私は、全体のマップを取得せずに(いくつかのキーと値のペアを追加または交換)metaMapフィールドを更新することができますか?例えば

、時にパラメータ{"k2":"new-v2","k3":"v3"}次のようになる資料とアップデート:私は春・データのMongoDBを使用してい

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

答えて

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

これは動作します。ありがとうございます – BlackJoker

関連する問題