私は複数の選択肢の質問のリストを持っており、ユーザーが同じ質問に答えるたびに、この質問に対する彼の答えを保存したい。だから私は、ユーザーごとに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を使用します。ご協力ありがとうございました。