2015-09-09 76 views
0

我有一個像myPortCollection更新使用蒙戈

{ 
    "_id" : ObjectId("55efce10f027b1ca77deffaa"), 
    "_class" : "myTest", 
    "deviceIp" : "10.115.75.77", 
    "ports" : { 
     "1/1/x1" : { 
      "portId" : "1/1/x1", 
      healthState":"Green" 

文件我嘗試更新

db.myPortCollection.update({ 
    { deviceIp:"10.115.75.77"}, 
    { "chassis.ports.1/1/x10.rtId":"1/1/x10" }, 
    { $set: { "chassis.ports.1/1/x10.healthState" : "Red" } 
}) 

但我得到這個屬性提到的名字是錯的錯誤,請您及時幫助下,地圖有價證券價值爲嵌入式地圖文檔更新指定正確的語法。

回答

0

「查詢」部分錯誤,因爲您已將條件拆分爲兩個文檔。它應該是這樣的:

db.myPortCollection.update(
    { 
     "deviceIp":"10.115.75.77", 
     "chassis.ports.1/1/x10.rtId":"1/1/x10" 
    }, 
    { "$set": { "chassis.ports.1/1/x10.healthState" : "Red" } } 
) 

而且只要查詢接着匹配(有效數據在你的問題未顯示),然後指定字段將被設置或添加。

+0

感謝布雷克斯,我已經嘗試過類似的方式,但仍然存在一些錯誤> db.cachedNodeChassis.update({「deviceIp」:10.115.75.77「,」chassis.ports.1/1/x10.p ortId「 :「1/1/x10」},{$ set:{「chassis.ports.1/1/x10.duplex」:「test」}})2015-09-09T14:28:18.793 + 0530 E QUERY SyntaxError :意想不到的號碼 – Naidu

+0

@NarayanaPachava請從上面剪切並粘貼您的錯誤表明您正在輸入內容並且您沒有正確引用字段檢查所有「dot notated」字段是否完全包含在引號中您還看起來有很好的括號至少與上面的內容相比, –

+0

非常感謝@Blakes Seven,它的工作原理!!欣賞您在即時回覆 – Naidu