Ответ 1
Вариант $set
будет быстрее, так как $pull
будет выполнять вычисления на массивах. Я даже не уверен, будет ли это работать, поскольку вы не удаляете какие-либо элементы с вашим запросом.
Я ищу подходящий способ удалить все элементы из поля массива (по всем документам) в Mongodb - они кажутся эквивалентными, что рекомендуется: (или, возможно, другим способом?)
db.collection.update({}, { $pull : { 'myArray': {} }}, {multi:true} )
или
db.collection.update({}, { $set : {'myArray': [] }} , {multi:true} )
Вариант $set
будет быстрее, так как $pull
будет выполнять вычисления на массивах. Я даже не уверен, будет ли это работать, поскольку вы не удаляете какие-либо элементы с вашим запросом.
Просто чтобы убедиться, вам нужно сохранить пустой массив? Потому что в противном случае, вероятно, лучше $unset
его.
Если вы должны сохранить пустой массив, я считаю, что ваш вызов $pull
не будет работать - я думаю, он удалит все пустые элементы из вашего массива, а не все элементы.
Согласно официальному документу Mongodb:
При использовании с $для соответствия элементу массива $unset заменяет совпадающий элемент с нулевым, а не удаление соответствующего элемента из массива. Такое поведение сохраняет согласованный размер массива и позиции элемента.
Набор $должен быть правильным.