1

私はしばらくの間mongodbで遊んでいます。存在しない値またはキーを削除しようとしてもエラーが発生しないという概念がわかりません。

        $host = '10.311.33.2';
        $user = 'admin'; $password = 'admin';
        tmpHost ="mongodb://$user:$password@$host";
        $m = new Mongo("$tmpHost");
        $db = $m->selectDB("common");
        $collection = new MongoCollection($db,"list");
        $result = array('name'=>'ali');
        $collection->insert($result);
        if($collection->remove($result)){
        echo "Remove";}
        else{
         echo "Not removed";}
        // Should display Not removed, since its not existing. but it displays Remove :S
        if($collection->remove($result)){
        echo "Remove";}
        else{
         echo "Not removed";}

そのようなdbはどのように使用できますか?

4

1 に答える 1

2

オプションでセーフフラグなしで MongoCollection::remove を呼び出しています (オプションなしで呼び出しています)。これは、コマンドがファイア アンド フォーゲット方式で動作することを意味します。データベースに送信され、応答を待たずにプログラムの実行が続行されます。

そのように呼び出すと:

$collection->remove($result, array("safe" => true))

戻り値は、クエリの動作に関する情報を含む配列になります。この配列のフィールド「n」には、影響を受けるオブジェクトの数が含まれます。remove コマンドが何も実行しなかった場合、これは 0 になります。

ところで、私が以前使っていたほとんどのデータベースは、何の影響もない削除クエリをエラーとして扱いません

于 2012-09-18T22:41:03.287 に答える