У меня есть эта структура в mongoDB, и я хочу удалить все элементы Vespertino с помощью PHP:
{"_id": ObjectId("5a186d574b23328df3be"),"monday": [
"Vespertino",
"Matutino"],"tuesday": [
"Test1",
"Matutino"],"wednesday": [
"Vespertino",
"Test2"],"thursday": ["Test3","Matutino"],"friday": ["Vespertino","Matutino"],"saturday": ["Matutino"],"sunday": [],"id":"30334798","c_code": "my_company"}
Сначала я пытался получить результаты, а затем удалить элемент, но я получаю только нулевые результаты, это была моя попытка до сих пор:
$query_shifts = array('c_code'=>"my_company","wednesday.Vespertino"=> array('$exists' => true));
о нет, нет, @MiguelCruz, мне нужно удалить элементы из документа MongoDB. Спасибо, в любом случае.






запрос mongodb:
db.CollectionName.update({"_id": ObjectId("5a186d574b23328df3be")}, {
{$pull: {monday: "Vespertino", tuesday: "Vespertino", wednesday: "Vespertino", thursday: "Vespertino", friday: "Vespertino", saturday: "Vespertino", sunday: "Vespertino"} },
{ multi: true }
});
в PHP:
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(["_id" => new MongoDB\BSON\ObjectId("5a186d574b23328df3be")], [$pull => ['monday' => "Vespertino", 'tuesday' => "Vespertino", 'wednesday' => "Vespertino", 'thursday' => "Vespertino", 'friday' => "Vespertino", 'saturday' => "Vespertino", 'sunday' => "Vespertino"]);
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$result = $manager->executeBulkWrite('dbName.CollectionName', $bulk);
Я надеюсь помочь вам.
Спасибо! ваше решение работает идеально! Это мой окончательный код в PHP: $r = $col->update(array('c_code'=>"my_company"),array('$pull'=>array('monday'=>"vespertino ",'вторник'=>"vespertino",'wednesday'=>"вечерний",'thursday'=>"вечерний",'пятница'=>"вечернийино",'суббота' =>"vespertino",'sunday'=>"vespertino")),array('multiple' => true) );
Да; Ваш окончательный код подходит для удаления всех предметов «веспертино» из всех документов вашей коллекции.
Взгляните: stackoverflow.com/questions/369602/… попробуйте использовать array_slice или отключить