我玩 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怎么用,
最佳答案
您调用 MongoCollection::remove 时选项中没有安全标志(您调用它时没有任何选项)。这意味着该命令以即发即弃的方式运行。它被发送到数据库,程序继续执行而无需等待回复。
当你这样调用它时:
$collection->remove($result, array("safe" => true))
返回值将是一个数组,其中包含有关查询如何工作的信息。该数组的字段“n”包含受影响对象的数量。当删除命令什么都不做时,这应该是 0。
顺便说一下:我之前使用的大多数数据库不会将不影响任何内容的删除查询视为错误。
关于php - mongodb remove 不返回 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12478831/