2012-02-14 60 views
0

我想向另一個數組內的數組添加一個值。我的文檔是這樣的:

{categories:[{categoryName:"a category", items:[{itemName:"an item", arrayOfValues:[1]}]}]} 

我想使用$ addToSet來arrayValues。要做到這一點我做的更新與查詢

table.update({"categories.items.itemName" : "anItem"}, {$addToSet: "categories.$.items.$.arrayOfValues":"10"}) 

,但我得到一個錯誤:使用字符串字段名稱[$]

我在做什麼錯誤不能追加到數組?是否有可能使用嵌套數組進行更新?

感謝陣列內

回答

3

數組被認爲是不好的MongoDB的設計,現在(主要是因爲你不能有效地對其進行操作,使用$addToSet和朋友)。並且您更進一步並在數組內的數組內創建數組!

我知道MongoDB的無模式特性會導致您可以將文檔任意結構放入其中並稍後處理它們。不幸的是,這不是現實。你必須知道你在做什麼,有什麼特點和侷限性。在這種情況下,你can't use positional operator to push element to a nested array

+2

hmmm MongoDb現在對我來說似乎不那麼強大了... – Matroska 2012-02-14 21:20:47

+0

@RemonvanVliet:你在我的答案中沒有注意到這個鏈接嗎? :) – 2012-02-15 11:18:25

+0

Woopsy,我沒有;) – 2012-02-15 11:38:20