Nie ma prostego sposobu na wyciąganie/usuwanie według indeksu tablicy. W rzeczywistości jest to otwarty problem http://jira.mongodb.org/browse/SERVER-1014 , możesz na niego głosować.
Rozwiązaniem jest użycie $unset, a następnie $pull:
db.lists.update({}, {$unset : {"interests.3" : 1 }})
db.lists.update({}, {$pull : {"interests" : null}})
Aktualizacja:jak wspomniano w niektórych komentarzach, to podejście nie jest niepodzielne i może powodować pewne sytuacje wyścigu, jeśli inni klienci odczytują i/lub zapisują między dwiema operacjami. Jeśli potrzebujemy, aby operacja była atomowa, moglibyśmy:
- Odczytaj dokument z bazy danych
- Zaktualizuj dokument i usuń element z tablicy
- Zastąp dokument w bazie danych. Aby upewnić się, że dokument nie zmienił się od czasu jego przeczytania, możemy użyć aktualizacji, jeśli bieżący wzorzec jest opisany w dokumentacji mongo