Der er ingen lige måde at trække/fjerne efter array-indeks. Faktisk er dette et åbent spørgsmål http://jira.mongodb.org/browse/SERVER-1014 , du kan stemme for det.
Løsningen er at bruge $unset og derefter $pull:
db.lists.update({}, {$unset : {"interests.3" : 1 }})
db.lists.update({}, {$pull : {"interests" : null}})
Opdatering:som nævnt i nogle af kommentarerne er denne tilgang ikke atomær og kan forårsage nogle raceforhold, hvis andre klienter læser og/eller skriver mellem de to operationer. Hvis vi har brug for, at operationen er atomær, kunne vi:
- Læs dokumentet fra databasen
- Opdater dokumentet, og fjern elementet i arrayet
- Erstat dokumentet i databasen. For at sikre, at dokumentet ikke er ændret, siden vi læste det, kan vi bruge opdateringen, hvis det nuværende mønster er beskrevet i mongo-dokumenterne