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";}

如何使用这样的数据库,

4

1 回答 1

2

您在选项中调用 MongoCollection::remove 时没有安全标志(您在没有任何选项的情况下调用它)。这意味着该命令以“即发即弃”的方式运行。它被发送到数据库,程序继续执行,无需等待回复。

当你这样称呼它时:

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

返回值将是一个数组,其中包含有关查询如何工作的信息。该数组的字段“n”包含受影响对象的数量。当删除命令什么都不做时,这应该是 0。

顺便说一句:我之前使用过的大多数数据库都不会将不影响任何内容的删除查询视为错误。

于 2012-09-18T22:41:03.287 回答