MongoCollection::remove
(PECL mongo >=0.9.0)
MongoCollection::remove — レコードをコレクションから削除する
説明
public MongoCollection::remove
([ array $criteria
= array()
[, array $options
= array()
]] ) : bool|array
パラメータ
criteria
削除したいレコードの条件。
options
削除時のオプションの配列。 現在利用可能なオプションは、以下のとおりです。
"w"
WriteConcerns を参照ください。MongoClient でのデフォルト値は
1
です。"justOne"
true
を指定すると、条件にマッチするレコードを 1 件だけ削除します。false
を指定したり省略したりした場合は、条件にマッチするすべてのレコードを削除します。"fsync"
Boolean 型で、デフォルトは
false
です。 ジャーナリングが有効な場合、これは"j"
とまったく同じ動きをします。 ジャーナリングが有効でない場合は、追加をディスク上のデータベースファイルに同期させるまで成功したと見なさないようになります。true
にすると確認つき書き込みが暗黙のうちに設定され、"w"
の値を0
にします。注意: ジャーナリングが有効な場合は、
"fsync"
のかわりに"j"
を使いましょう。"fsync"
と"j"
を同時に指定すると、エラーになります。"j"
デフォルトは
false
です。これを指定すると、追加をジャーナルに同期させるまで成功したと見なさないようになります。true
にすると確認付き書き込みと見なされ、"w"
の設定を0
に上書きします。注意: このオプションを使っているときにジャーナリングを無効にすると、MongoDB 2.6 以降ではエラーが発生して書き込みに失敗します。古いバージョンのサーバーでは、単純にオプションの指定を無視します。
"socketTimeoutMS"
このオプションは、ソケット通信の制限時間を、ミリ秒単位で指定します。この時間内にサーバーからの反応がなければ、MongoCursorTimeoutException をスローします。この場合、サーバー側で書き込み処理が行われたのかどうかを判断できなくなります。
-1
を指定すると、永遠にブロックします。MongoClient のデフォルト値は30000
(30 秒) です。"w"
WriteConcerns を参照ください。MongoClient でのデフォルト値は
1
です。"wTimeoutMS"
このオプションは、書き込み確認を待つ制限時間をミリ秒単位で指定します。これが書き込み操作に適用されるのは、
"w"
が1
より大きい場合のみです。というのも、タイムアウトはレプリケーションに関する機能だからです。この時間内に書き込み確認ができなかった場合は MongoCursorException をスローします。0
を指定すると、永遠にブロックし続けます。MongoClient でのデフォルトは10000
ミリ秒 (10 秒) です。
以下のオプションは廃止予定です。使ってはいけません。
"safe"
非推奨。write concern の
w
オプションを使いましょう。"timeout"
非推奨。
"socketTimeoutMS"
のエイリアス。"wtimeout"
廃止予定。
"wTimeoutMS"
のエイリアスです。
返り値
"w"
が設定されていれば、削除の状態を表す配列を返します。
それ以外の場合は true
を返します。
状態を表す配列のフィールドについては MongoCollection::insert() のドキュメントを参照ください。
エラー / 例外
"w"
オプションが設定されていて書き込みが失敗した場合に MongoCursorException をスローします。
"w"
オプションの値が 1 より大きく設定されていて、操作の完了までの時間が MongoCursor::$timeout
ミリ秒をこえた場合に MongoCursorTimeoutException をスローします。サーバー上での操作は止めません。これはクライアント側でのタイムアウトです。MongoCollection::$wtimeout
はミリ秒です。
変更履歴
バージョン | 説明 |
---|---|
PECL mongo 1.5.0 |
|
PECL mongo 1.3.4 | "wtimeout" オプションが追加されました。
|
PECL mongo 1.3.0 |
|
PECL mongo 1.2.11 | options が scalar のときに E_DEPRECATED を発行するようになりました。
|
PECL mongo 1.2.0 | "timeout" オプションが追加されました。
|
PECL mongo 1.0.11 | "safe" が設定されている場合は、"not master" エラーで接続を切断するようになりました。
|
PECL mongo 1.0.9 |
|
PECL mongo 1.0.5 | 二番目のパラメータがオプションの配列に変わりました。1.0.5
より前のバージョンでは、二番目のパラメータは |
例
例1 MongoCollection::remove() で justOne を使う例
<?php$radioactive = $db->radioactive;// プルトニウムがあとどれだけ残っているかを数えます$remaining = $radioactive->count(array('type' => 94));$halflife = $remaining/2;// それを半減させますwhile ($halflife > 0) { $radioactive->remove(array('type' => 94), array("justOne" => true)); $halflife--;}?>
参考
- MongoCollection::insert() - ドキュメントをコレクションに追加する
- MongoCollection::update() - 指定した条件にもとづいてレコードを更新する
- MongoDB コアドキュメントの » remove