2017-07-02 11 views
0

私は複数の選択肢の質問のリストを持っており、ユーザーが同じ質問に答えるたびに、この質問に対する彼の答えを保存したい。だから私は、ユーザーごとに1つのドキュメントを作成し、1つの質問ごとに回答履歴を作成したいと考えています。私はquestionIdと答えの配列(答えは「ans」)を保持する一連の質問を作成しました。質問1、最初の答え「a」に追加する基本コードを書きました。答えは「B」との文書MongoDb PHP配列の配列に値を挿入する

$m = new MongoClient(); 
$db = $m->test; 
$answers = $db->answers; 

$answers->insert([ 'userId' => 1, 'questions' => [[ 'questionId' => '1', 'ans' => ['a'] ]]]); 
$answers->update(array('userId' => 1, 'questions.questionId' => '1'), 
       array('$push' => array('questions' => array('ans' => 'b')))); 

を問題ではなく、既存のアレイに追加するのは、新しいオブジェクトが作成されていることである:。

_id:5958c3e1e87cbf643400734d 
userId:1 
    questions:Array 
    0:Object 
    questionId:"1" 
    ans:Array 
    0:"a" 
    1:questionId 
    ans:"b" 

私は、これは非常に基本的な質問です知っているが、私は他の質問を検索しましたが、構文が働かないのですが、問題は正しい文書が見つかったということにありますが、既存の文書に追加する方法はわかりません新しいansフィールドを作成する代わりにrrayを使用します。ご協力ありがとうございました。

答えて

0

私は最後に解決策を見つけました。私は使用していた。 $ ''>> array( '$ push' => array( 'questions。$)'と$表記

$ answers-> update(array( 'userId' => 1、 'questions.questionId' => '1')、 array ans '=>' try2 ')));

関連する問題