Как удалить элемент в документе по ключу в Монго?

У меня есть следующий монго документ:

"parameters" : {
"59209f26470e6c8d0b3c986b" : {
"Speed" : "900"},
"59209f31470e6cb90e3c986b" : {
"Weight" : [
"1"]
}
},

Мне нужно удалить элемент из parameters по ключу "59209f26470e6c8d0b3c986b", Как это сделать?

Я старался:

$new = array('$pull' => array("parameters" => $this->mongoDbID($id)));

$this->collection->update(array("parameters" => []), $new);

Также я попробовал:

$this->collection->update(array(), array('$pull'=>array('‌​parameters'=> $id)));

Я пробовал также:

$this->collection->update(
array(),
array('$pull' => array('parameters' => $id, []))
);

Это дает мне:

localhost: 27017: невозможно применить $ pull к значению, не являющемуся массивом

Полный документ:

 > db.objects.find().pretty()
{
"_id" : ObjectId("5920b488470e6c910b3c986d"),
"name" : "dadasd",
"category_id" : "591efb0f470e6ccc143c9873",
"prototype_id" : "591ed2f0470e6ccc143c986e",
"parameters" : {
"5920a907470e6cf80d3c986b" : {
"adadad" : "dad"}
},
"parameters_type" : {
"5920a907470e6cf80d3c986b" : NumberLong(1)
},
"available" : "1"}

0

Решение

То, что вы пытаетесь сделать, это $unset (документы Вот)

Теперь пример:

$docId = $this->mongoDbID('5920b488470e6c910b3c986d');
$parameterId = '59209f26470e6c8d0b3c986b';
$this->collection->update(
['_id' => $docId],
['$unset' => [
'parameters.'.$parameterId => null,
'parameters_type.'.$parameterId => null
]]
);

или же :

$parameterId = '59209f26470e6c8d0b3c986b';
$this->collection->update(
[],
['$unset' => [
'parameters.'.$parameterId => null,
'parameters_type.'.$parameterId => null
]],
['multiple' => true]
);
0

Другие решения

Решение согласно вашему ответу:

$this->parametersCollection->update(array('_id'=>$id),array('$unset'=>array('parameters_Id' => $null)));

Или же

$this->parametersCollection->update(array('_id'=>$id),array('$unset'=>array('parameters_Id' => $null)),array('multiple' => true));

Например: $ key = «59209f26470e6c8d0b3c986b»

Некоторые справочные ссылки для php-mongodb

1.http://php.net/manual/en/mongocollection.remove.php

2.http://php.net/manual/en/class.mongocollection.php

3.http://php.net/manual/en/mongocollection.update.php

4.http://php.net/manual/en/mongocollection.insert.php

5.https://docs.mongodb.com/manual/tutorial/update-documents/

0

По вопросам рекламы [email protected]