Я пытаюсь избавиться от документа от _id
, но процесс PHP останавливается без ошибок и не access.log
ошибок в access.log
, и нет вывода, если я назначаю переменную remove()
. Использование mongodb: version v2.4.9
$connection = new MongoClient();
if($connection == NULL) {
return "some msg";
}
$db = $connection->main;
$collection = $db->users;
$document = $collection->findOne(array('email' => $user->email));
if($document == NULL) {
// do some stuff, works fine.
} else {
$id = $document["_id"];
echo "id=".$id // outputs: 5469a22600a8ebe8418b4567
if($document["confirm"] != "true") {
echo "confirmed not true" // outputs fine
$collection->remove(array('_id' => new MongoId($id)), true);
echo "hello!"; // never occurs
}
}
EDIT: Я пробовал это, и нет вывода:
try {
$collection->remove(array('_id' => new MongoId($id)), true);
} catch(Exception $e) {
echo $e->getMessage();
}
EDIT: Я нашел ответ, но я не понимаю ответа, потому что каждый пример, который я видел, включает в себя true
аргумент. Поэтому я не буду сам отвечать на этот вопрос и оставлять его эксперту.
Это не работает:
$collection->remove(array('_id' => new MongoId($id)), true);
Это не работает:
$collection->remove(array('_id' => new MongoId($id)), false);
Это работает:
$collection->remove(array('_id' => new MongoId($id)));
Я могу объяснить вашу проблему, но я не могу объяснить, почему вы не видите ошибки, должно быть что-то странное в вашей настройке PHP.
В любом случае, почему ваше boolean
значение только для второго параметра не работает: это потому, что драйвер PHP ожидает массив: http://php.net/manual/en/mongocollection.remove.php примеры, с которыми вы работали, были либо невероятно старым (так как произошло изменение 1.0.5 http://php.net/manual/en/mongocollection.remove.php#refsect1-mongocollection.remove-changelog) или неверно.