У меня есть следующий монго документ:
"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"}
То, что вы пытаетесь сделать, это $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]
);
Решение согласно вашему ответу:
$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/