MongoDB + PHP Item не будет удален ()? - PullRequest
1 голос
/ 29 октября 2010

Я не уверен, что делаю неправильно, но с MongoDB и PHP я пытаюсь сделать это:

$db->textures->remove(array("_id"=>$_GET['texture_id']),array("safe" => true))

Но ничего не происходит.Я сделал print_r и там написано:

Array ( [err] => [n] => 0 [ok] => 1 )

Ответы [ 4 ]

2 голосов
/ 02 июля 2015

Следующий ответ Оскара Годсона является верным, но теперь считается устаревшим с 1.5.0:

$db->textures->remove(array("_id"=>new MongoId($_GET['texture_id'])),array("safe" => true));

теперь должно быть записано с использованием опции "w" , например:

$db->textures->remove(array("_id"=>new MongoId($_GET['texture_id'])),array("w" => 1));

Источники

1 голос
/ 31 августа 2015

Чтобы удалить документ на основе его идентификатора, вам нужно убедиться, что вы передаете идентификатор как объект MongoID, а не просто строку:

<?php 
$id = '4b3f272c8ead0eb19d000000';
// will not work:
$collection->remove(array('_id' => $id), true);

// will work:
$collection->remove(array('_id' => new MongoId($id)), true);
?>
0 голосов
/ 29 октября 2010

Если идентификатор не указан при сохранении записи, тогда да, вам нужно будет использовать объект MongoID для построения правильных критериев поиска. Однако вы можете определить, что _id - это то, что вы хотите - простое целое число, текст, метка времени и т. Д., - которое вы можете использовать для поиска, как и в любом другом свойстве.

См. Следующий вывод CLI в качестве примера - первый объект имеет _id, который содержит тип ObjectId, но второй содержит простую строку. Поиск по строке работает как обычно:

> db.test.save({ name: "Test Object 1"});
> db.test.save({ _id: "abc123", "name" : "Test Object 2" });
> db.test.find();
{ "_id" : ObjectId("4cca41c9d86d000000006d33"), "name" : "Test Object 1" }
{ "_id" : "abc123", "name" : "Test Object 2">
db.test.find({"_id" : "abc123"});
{ "_id" : "abc123", "name" : "Test Object 2" } }
0 голосов
/ 29 октября 2010

Дерьмо, похоже, так как я удаляю MongoID, я должен сделать это:

$db->textures->remove(array("_id"=>new MongoId($_GET['texture_id'])),array("safe" => true));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...