Neexistuje žádný přímý způsob stahování/odstraňování podle indexu pole. Ve skutečnosti se jedná o otevřené téma http://jira.mongodb.org/browse/SERVER-1014, můžete pro něj hlasovat.
Řešením je použití $unset a poté $pull:
db.lists.update({}, {$unset : {"interests.3" : 1 }})
db.lists.update({}, {$pull : {"interests" : null}})
Aktualizace:jak bylo zmíněno v některých komentářích, tento přístup není atomický a může způsobit určité závody, pokud jiní klienti mezi těmito dvěma operacemi čtou a/nebo zapisují. Pokud potřebujeme, aby operace byla atomová, mohli bychom:
- Přečtěte si dokument z databáze
- Aktualizujte dokument a odeberte položku v poli
- Nahraďte dokument v databázi. Abychom se ujistili, že se dokument od doby, kdy jsme ho přečetli, nezměnil, můžeme použít aktualizaci aktuálního vzoru popsaného v mongo docs