2017-07-02 166 views
0

所以我有一个多选题的列表,我想存储,每次用户回答同一个问题时,他对这个问题的回答。所以我想为每个用户创建一个文档,并为每个问题的回答历史记录。我提出了一系列问题来解决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而不是创建一个新的ans领域。感谢您的帮助。

回答

0

好的我终于找到了解决方案。我曾经使用过。 ($''''','$'''''),$美元符号

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