2012-02-14 11 views
0

別の配列の内側にある配列に値を追加したいとします。私はarrayValuesに$ addToSetを使用したい

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

:マイドキュメントは次のようです。私は、クエリ

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

と更新をしていませんが、私はエラーを取得するには、次の文字列フィールド名を使用してアレイに追加することはできません、私は間違って[$]

何をしているのですか?ネストされた配列で更新することは可能ですか?配列内の

おかげ

答えて

3

配列は、(主にあなたが$addToSetや友人を使用して、それらを効率的に操作することができないので)今、悪いMongoDBのデザインを考えられています。そしてそれをさらに進めて、配列内の配列を配列内に作成しました!

MongoDBのスキーマレスな性質は、のドキュメントを構造に投げ込んで後で処理できるという気持ちがあることを理解しています。残念ながら、これは現実ではありません。あなたは何をしているのか、そこにどのような特徴と限界があるのか​​を知る必要があります。この場合、あなたはcan't use positional operator to push element to a nested arrayです。

+2

なるほどMongoDBは今、私にはそれほど強力らしい... – Matroska

+0

@RemonvanVliet:あなたは私の答えでこのリンクを気づきませんでしたか? :) –

+0

Woopty、私はしなかった;) –

関連する問題