2011-10-11 6 views
1

j'ai essayé d'exécuter cette requête:PHP MongoDB mise à jour plusieurs champs avec une requête

$collection->update(
    array('_id' => 'mongoIDhere'), 
    array(
     '$set' => array("parent" => 'data'), 
     array("parents" => 'data') 
    ), 
    array("upsert" => true) 
); 

Mais il ne met à jour le second paramètre « set » (qui est un tableau (« parents » => « data »)). Lorsque cela est fait dans deux requêtes distinctes, cela fonctionne bien, mais ensemble, il ne fait pas - ce qui donne ?!

Répondre

1
$collection->update(
    array('_id' => 'mongoIDhere'), 
    array(
     '$set' => array("parent" => 'data'), 
    ), 
    array("upsert" => true) 
); 

Rappelez-vous que MongoDB accepte tableau en format paire de valeurs key-> à savoir array("parents" => 'data') doit être $something => array("parents" => 'data') ou divertissez changé dans votre fichier php.ini afin qu'il soit autorise les valeurs NULL comme clé.

0

Essayez avec multiples Option

$collection->update(
    array('_id' => 'mongoIDhere'), 
    array('$set' => array("parent" => 'data')), 
    array("upsert" => true, "multiple" => true) 
); 

"multiples" l'option

Tous les documents correspondant aux critères $ seront mis à jour. MongoCollection :: update() a exactement le comportement inverse de MongoCollection :: remove(): il met à jour un document par défaut, pas tous les documents correspondants. Il est recommandé de toujours spécifier si vous souhaitez mettre à jour plusieurs documents ou un seul document, car la base de données peut changer son comportement par défaut à un moment donné. Essayez quelque chose comme

Mongocollection in PHP Doc's

0

cela.

$collection->update(
      array('_id' => 'mongoIDhere'), 
      array(
       '$set' => 
          array(
           array("parent" => 'data'), 
           array("parents" => 'data') 
           ) 
      ), 
      array("upsert" => true) 
     ); 

Espérons que cela fonctionne ..

Questions connexes