1

セレクター (最初の引数) がコレクション内の複数のドキュメントを選択している場合、MongoDB は複数のドキュメントの更新をサポートしますか?

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

2 番目のケースでは、コレクション $addresses には '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 値を更新します。これは予期される動作です。

console コマンドは少なくとも 1 つのドキュメントを更新しています。セレクターが複数のドキュメントに一致する場合、PHP は何もしません。

4

1 に答える 1

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)
);
于 2012-03-21T14:33:34.453 に答える