@AndrewRusinas

Как удалить документ из mongodb, который содержит массив определенных элементов?

Есть документ, который содержит массив.
someField: [ 'ab', 'cd', 'ef', 'gh' ]

Чтобы удалить этот документ, нужно передать в mongoose массив со значениями ровно в таком же порядке, что сложно гарантировать. То есть, на входе может оказаться [ 'bc', ef', gh', 'ab' ], и тогда он не будет удален.

Когда я знаю, что в этом массиве может быть максимум два элемента, срабатывает такой хак:
schema.findOneAndDelete( { $or: [ { someField: [ 'ab', 'cd' ] }, { someField: [ 'cd', 'ab' ] } ] })


Но если элементов больше, то это уже не подойдет. Наверняка в mongo/mongoose есть какой-то механизм для этого.
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 1
IDONTSUDO
@IDONTSUDO
ЧСВ программистов идет в комплекте с первой IDE.
Это слишком жесткий хак.

schema.findOneAndDelete( { $or: [ { someField: [ 'ab', 'cd' ] }, { someField: [ 'cd', 'ab' ] } ] })

даже при таком варианте, вы не можете гарантировать что удалится именно тот массив который вы искали. Как не подходи, к этой проблеме. При любом раскладе, мы можем удалить не ту информацию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы