2012-03-21 7 views
1

セレクタ(第1引数)がコレクション内で複数の文書を選択している場合、MongoDBは複数の文書更新をサポートしますか?mongodbでの複数の文書の更新問題

最初の例では、特定のドキュメントのみを選択してZIP値を変更するため、最初の例は正常に動作します。

2番目のケースでは、$ addressには 'home' => 'canada'という複数のドキュメントがありますが、何も更新しません。

誰かお手伝いできますか?

$addresses->update(array('_id' => new MongoId('4f69de380c211d6c21000001')), 
       array('$set' => array('zip' => 20))); 

$addresses->update(array('home' => 'canada')), 
       array('$set' => array('zip' => 20))); 

編集:最初に遭遇した試合の

同等のJavaScriptのコマンド

db.addresses.update({home: "canada"}, {$set: {zip: 20}}) 

アップデートのzip値が、これは正常な動作です。

コンソールコマンドが少なくとも1つのドキュメントを更新しているため、セレクタが2つ以上のドキュメントと一致する場合、PHPは何もしません。

答えて

3

2つ目のステートメントが一致する限り、常に1つのドキュメントを更新する必要があります。

複数のドキュメントに適用する場合は、ここに記載されている複数のフラグを渡す必要があります。あなたのケースでは

http://www.php.net/manual/en/mongocollection.update.php

クエリは次のようになります。

$addresses->update(array('home' => 'canada'), 
      array('$set' => array('zip' => 20)), 
      array('multiple' => true) 
); 
+0

をそれは文法の間違い "カナダ)であった)、代わりに 'カナダ')の,.あなたのすばらしい本に感謝します。私はちょうど読み始めました。 –

関連する問題