2016-06-25 8 views
0

私はここ数時間、この問題に苦労しており、正しく動作するようにはできません。私のケースでは、それを正しく実装することはできません。MongoDBで配列の配列に項目をプッシュする

基本的には、MongoDBの中の私の文書には、次のようになります。場合

{ 
"_id": "H2RLYBniXZ7Fkszpu", 
    "userId": "FmMsoqXxJ8Nd4DRm5", 
    "Data": { 
    "name": "This is just a test.", 
    "summary": "sdadsdas", 
    "testId": "EyWcg1vS-", 
    "questions": [ 
     { 
     "type": "test", 
     "key": "E1eol1DS-", 
     "options": [] 
     } 
    ], 

} 
} 

私の目標は、特定のオブジェクトのkeyその配列では、私が要求する入力に等しいこと"Data.questions.options"配列$pushとの項目にあります。

私はこのようなことをやって、$in演算子を使用することを含む、このさまざまな方法を、やってみました:

Db.fix.update({_id: "H2RLYBniXZ7Fkszpu"}, {$push: {"Data.questions.$.options": "option"}}); // Pushing the string "option" into the options array 

また、私は条件文を追加できるかどうかを確認するためにMongoDBのための$condオペレータに探していたが、それはです集約のためにのみ。私はこれをどのように進めるべきか分かりません。このようなネストされた配列でこれを行うことさえ可能かどうかはわかりません。

答えて

1

あなたは非常に近くでした。 $ positional operatorのキー部分は、です。配列フィールドは、クエリ文書の一部として表示される必要があります。

これを試してみてください:

db.Fix.update({_id: "H2RLYBniXZ7Fkszpu", "Data.questions.key":"E1eol1DS-"}, {$push: {"Data.questions.$.options": "option"}}); 
関連する問題