2011-09-23 52 views
0

答案:它只是一個1.4.4的錯誤。升級到2.0已解決了這個問題。MongoDB點符號更新時

我在蒙戈下列對象:

{ 
    _id: "foo", 
    bar: "baz", 
    list: { 
    42: { some: "prop" } 
    } 
} 

我想在「名單」一鍵43補充,所以我做了以下內容:

db.collection.update({ 
    _id: "foo" 
}, { 
    $set: { 
    "list.43": { some: "other prop" } 
    } 
}) 

一切都很好,但帶有新子對象的43成爲列表屬性中唯一的關鍵字。爲什麼?爲什麼有42了?

預期結果:

{ 
    _id: "foo", 
    bar: "baz", 
    list: { 
    42: { some: "prop" }, 
    43: { some: "other prop" } 
    } 
} 

真實結果:

{ 
    _id: "foo", 
    bar: "baz", 
    list: { 
    43: { some: "other prop" } 
    } 
} 

更新:事實上,問題是如何增加一個鑰匙插入一個嵌套的目的是在一個原子電話嗎?

+2

你運行的是哪個版本的MongoDB?你的例子,在[你]期望的1.8x shell上運行,導致list成爲一個雙節點對象。是否有機會在更新中輸入錯誤或正在檢索錯誤的對象? – cjohn

+0

謝謝,這是一個v.4.4.4的bug –

回答

0

這應該工作。也許你以前用錯誤的更新刪除了它?

再試一次。