2013-07-28 288 views
0

比方说,我们有这样的文件:一个MongoDB的文档中的值到一个数组中添加

Array 
(
    [created_at] => 1373767280 
    [email] => [email protected] 
    [emailQueries] => Array 
     (
      [21] => 1 
     ) 
    [last_visit] => 1375033640 
) 

要更新emailQueries场,我这样做:

$updateEmailQueries['emailQueries']['22'] = 1; 
$collection->update(array('email' => $user['email']), array('$set' => $updateEmailQueries)); 

它更新了它,但它总是替换数组中的现有项目(即[21] => 1在这里将变成[22] => 1)。 我的目标是值添加到阵列中,并使它看起来例如像:

[emailQueries] => Array 
     (
      [21] => 1 
      [22] => 1 

     ) 

我尝试添加第二个​​,但似乎并没有做到这一点。

更新:

我想:

$updateEmailQueries['emailQueries']['21'] = 1; 
$collection->update(array('email' => $user['email']), 
        array('$push' => $updateEmailQueries)); 

我也得到

Fatal error: Uncaught exception 'MongoCursorException' with message 'localhost:27017: Cannot apply $push/$pushAll modifier to non-array';

回答

1

您正在寻找的$push operator

$arrayValueToAdd = array ('22' => 1); 
$collection->update( array('email' => $user['email']), 
         array('$push' => 
          array('emailQueries' => $arrayValueToAdd) 
         ) 
        ); 
+0

改变'$ updateEmailQueries'到'$ updateEmailQueries [ 'emailQueries']',或在我的回答就行了。希望能帮助到你。 – drvdijk

+0

感谢您的帮助。使用这也会返回一个致命错误,与我在发布后的更新相同。 – jSmith

+0

尝试编辑。 – jSmith

相关问题