這裏更新部分嵌套文件中MongoDB是我的文檔:如何使用Java
{ "_id" : ObjectId("5495cfcaec1e18b48015bba3"),
"Type" : "1",
"DomainSize" : "60",
"Metadata" : { "visit" : "3550",
"website" : "1",
"Specifics" : { "Size:" : "2",
"Type:" : "Janes",
"Closure Type:" : "Slip-On"},
"cat" : "2",
"function" : "6"},
"rate" : " 95.5% "}
我想更新從元數據幾個鍵,我不知道提前。 我的輸入是元數據列表中存在的鍵和值的映射。 我用另一個Map關鍵字是「元數據」和給定地圖的值包裝給定的地圖。
Map<String,Map<String,String>> metadata =new HashMap();
metadata.put("Metadata", values);
所以我結束了一個
<"Metadata", Map<Key,Value>>
然後我用下面的:
m_collection.update(new BasicDBObject("_id",id) , new BasicDBObject("$set", new BasicDBObject(metadata)));
記錄更新嵌套地圖添加'[]'
每個值內現有密鑰並刪除所有未更新的密鑰。
例如,給定的地圖是{'visit': '3558' , 'website' : '20'}
。
更新我結束了之後:
{ "_id" : ObjectId("5495cfcaec1e18b48015bba3"),
"Type" : "1",
"DomainSize" : "60",
"Metadata" : { "visit" : ["3558"],
"website" : ["20"]},
"rate" : " 95.5% "}
我做了什麼錯?
陛下...着我拉的對象從數據庫中,把拉動元數據值,它的地圖,然後把地圖內的更新值摺疊起來放在數據庫中?我只是怕有很多電話到數據庫。實際上更新操作將被調用大約30〜更新的值並幾乎每秒(這只是應用程序的一小部分) – USer22999299
您可以這樣做,但是對於每個文檔而言,這將是完整的往返行程。也許這很好,也許不是,但你需要考慮性能影響。 – evanchooly