Няма пряк начин за изтегляне/премахване чрез индекс на масив. Всъщност това е отворен въпрос http://jira.mongodb.org/browse/SERVER-1014 , можете да гласувате за него.
Заобиколното решение е използването на $unset и след това $pull:
db.lists.update({}, {$unset : {"interests.3" : 1 }})
db.lists.update({}, {$pull : {"interests" : null}})
Актуализация:както е споменато в някои от коментарите, този подход не е атомичен и може да причини някои условия на състезание, ако други клиенти четат и/или пишат между двете операции. Ако трябва операцията да е атомарна, бихме могли:
- Прочетете документа от базата данни
- Актуализирайте документа и премахнете елемента в масива
- Заменете документа в базата данни. За да гарантираме, че документът не се е променил, откакто сме го прочели, можем да използваме актуализацията, ако текущият модел е описан в документите на mongo