2013-07-28 524 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

相關問題