Mongodb findAndUpdate $ сбросить поле с пустым массивом - PullRequest
0 голосов
/ 08 сентября 2018

Это мой пример документа:

{
  keys: {
    attr1: ['a', 'b', 'c'],
    attr2: ['d', 'e']
  }
}

Я удаляю элементы в массиве вот так ...

{
  $pullAll: {
    'keys.attr2': ['d', 'e']
  }
}

И это оставляет меня с пустым массивом для поля attr2:

{
  keys: {
    attr1: ['a', 'b', 'c'],
    attr2: []
  }
}

Но что я хочу сделать, так это если поле теперь пустое, тогда я хочу $unset это поле, чтобы конечный результат выглядел так:

{
  keys: {
    attr1: ['a', 'b', 'c']
  }
}

Я хочу сделать это в рамках одной операции поиска и обновления.

Спасибо за помощь.

1 Ответ

0 голосов
/ 08 сентября 2018

К сожалению, это невозможно. Вы не можете выполнить дополнительное сопоставление в то же время, когда выполняете операции обновления. Однако вы можете выполнить второе обновление, соответствующее пустому массиву, а затем сбросить поле.

Это просто ограничение, которое вам придется обойти.

...