Подтвердить что ты не робот

Mongodb - правильный способ удаления всех элементов в поле массива?

Я ищу подходящий способ удалить все элементы из поля массива (по всем документам) в Mongodb - они кажутся эквивалентными, что рекомендуется: (или, возможно, другим способом?)

db.collection.update({}, { $pull : { 'myArray': {} }}, {multi:true} )

или

db.collection.update({}, { $set : {'myArray': [] }} , {multi:true} )
4b9b3361

Ответ 1

Вариант $set будет быстрее, так как $pull будет выполнять вычисления на массивах. Я даже не уверен, будет ли это работать, поскольку вы не удаляете какие-либо элементы с вашим запросом.

Ответ 2

Просто чтобы убедиться, вам нужно сохранить пустой массив? Потому что в противном случае, вероятно, лучше $unset его.

Если вы должны сохранить пустой массив, я считаю, что ваш вызов $pull не будет работать - я думаю, он удалит все пустые элементы из вашего массива, а не все элементы.

Ответ 3

Согласно официальному документу Mongodb:

При использовании с $для соответствия элементу массива $unset заменяет совпадающий элемент с нулевым, а не удаление соответствующего элемента из массива. Такое поведение сохраняет согласованный размер массива и позиции элемента.

Набор $должен быть правильным.