Удаление нулевых объектов из json в mongodb

Я использую php и MongoDB, библиотека с открытым исходным кодом, которую я использую, создает автоматически сгенерированный код для вызовов mongodb. это своего рода слой ODM.

Теперь, когда я использую встроенные документы, в родительском документе мне нужно обновить набор встроенных документов, библиотека выполняет вызов, используя $unsetкоторый согласно Документация устанавливает значение индекса в null и не удаляет его.

таким образом, теперь, когда я хочу заменить встроенный набор документов, я должен сначала удалить ($ unset) существующий набор, а затем добавить новый, оставив меня с таким результатом:

Original:
{
"parentDocument": {
"parent_id": "1",
"embeddedDocument": {
"0": {
"childValue": "0"},
"1": {
"childValue": "1"},
"2": {
"childValue": "2"}

}
}
}

Обновлено:

{
"parentDocument": {
"parent_id": "1",
"embeddedDocument": {
"0": null,
"1": null,
"2": {
"childValue": "2"}

}
}
}

Как я могу очистить эти данные из БД?
Я перепробовал много форумов, не нашел ни одного действующего решения для того же.
Мне нужно очистить эти полные данные. Спасибо

1

Решение

Вы должны были использовать $pull вместо $unset,

  • $unset установит элементы равными нулю внутри массивов

  • $pull удалит элементы из массивов

Вы можете удалить нулевые элементы, используя $pull:{'a.b':null}

1

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

Других решений пока нет …

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