Извлекать для каждого элемента встроенного хэша в MongoDB

#mongodb #mongoid

#mongodb #mongoid

Вопрос:

В MongoDB у меня есть документы, определенные как:

 {
    'foo': {
        'a': [1,2,3,4,5],
        'b': [1,5,9],
        'c': [2,5,7]
    }
}
  

Я ищу простой способ удалить, например, число 2 в каждом списке, где оно появляется. В этом примере это обновило бы этот документ до:

 {
    'foo': {
        'a': [1,3,4,5],
        'b': [1,5,9],
        'c': [5,7]
    }
}
  

Есть ли какое-либо решение для этого?

Спасибо.

Ответ №1:

Вы не можете сделать это, используя атомарные обновления, потому что позиционный оператор обновит только первый соответствующий элемент во вложенном массиве. Вы можете выполнять многократное обновление только для полей корневого уровня. Есть только одно решение: загрузить документ, обновить вложенный массив и сохранить.