2013-10-24 59 views
0

我有這樣一個文件,蒙戈DB更新子文檔 - 子文檔不在陣

{ 
    "S" : { 
     "500209" : { 
      "total_income" : 38982, 
      "interest_income" : 1714, 
      "reported_eps" : 158.76, 
      "year" : 201303 
     } 
    }, 
    "_id" : "pl" 
} 

我試圖更新此文件尚且如此,

{ 
    "S" : { 
     "500209" : { 
      "total_income" : 38982, 
      "interest_income" : 1714, 
      "reported_eps" : 158.76, 
      "year" : 201303, 
      "yield": 1001, <== inserted a new attribute 
     } 
    }, 
    "_id" : "pl" 
} 

我已經試過了,

db.my_collection.update({_id: 'pl'},{$set: {'S.500209.yield': 1}}) 

但我做不到。我搜索了堆棧溢出和谷歌,但我找不到。

我有這麼多的答案,但他們大多數保持子文檔在數組中。

請幫我解決我的問題,並請告訴我爲什麼他們大多數人將子文檔保存在數組中。

回答

1

數字鍵可能導致此問題。更新您的字段名稱。

db.my_collection.update({_id: 'pl'},{$set: {'S.a500209.yield': 1}}) 

編輯

升級蒙戈版本。它適用於2.4。

+0

不工作:-)無論如何感謝您的時間。 –

+1

你完全正確。問題是由於數量。我已將該數字更改爲字符串並嘗試使用。這是工作。 –

+1

正如我猜:)但問題是definetely關於數字字段名稱。 S.500209表示S是一個數組,我想要500209個元素。你可以只添加一個前綴到你的「500209」鍵,並使它像「a500209」?我想,'S.a500209.yield'會起作用。如果任何解決方案沒有更改字段名稱可用,有人會啓發我們 –