2013-07-28 5 views
0

Disons que nous avons ce document:Ajouter une valeur à un tableau dans un document MongoDB

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

Pour mettre à jour le champ emailQueries, je fais ça:

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

Il met à jour, mais il remplace toujours l'élément existant dans le tableau (ie [21] => 1 deviendrait ici [22] => 1). Mon but est d'ajouter des valeurs au tableau, et le faire paraître comme par exemple:

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

     ) 

J'ai essayé d'ajouter une deuxième '$set', mais ne semble pas le faire.

Mise à jour:

J'ai essayé:

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

Et je reçois

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

Répondre

1

Vous recherchez le $push operator.

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

changement '' $ updateEmailQueries' à updateEmailQueries $ [ 'emailQueries'] ', ou à la ligne dans ma réponse. J'espère que cela aide. – drvdijk

+0

Merci de votre aide. L'utilisation de ceci renvoie également une erreur fatale, la même que dans ma mise à jour de publication. – jSmith

+0

Essayer votre modification. – jSmith

Questions connexes