Я пытаюсь создать запрос, который удаляет встроенный документ из документа MongoDB в PHP. У меня теперь есть:
$collection->update(array("_id" => new MongoId($id)),
array('$unset' => 'BUSCO.short_summary_data'));
Я также пробовал:
$collection->remove(array("_id" => new MongoId($id)),
array('$unset' => 'BUSCO.short_summary_data'));
Ошибка не возникает, но встроенный документ все еще существует! Может ли кто-нибудь помочь мне?
Ваше текущее выражение, написанное в JSON, выглядит следующим образом:
{ $unset: 'BUSCO.short_summary_data' }
Но согласно документации:
Оператор $ unset удаляет определенное поле. Рассмотрим следующий синтаксис:
{ $unset: { <field1>: "", ... } }
Указанное значение в выражении $ unset (т.е. "") не влияет на операцию.
Таким образом, $unset
ожидает массив с парами ключ-значение. Пытаться:
$collection->update(array("_id" => new MongoId($id)),
array('$unset' => array('BUSCO.short_summary_data' => '')));