Det finns inget rakt sätt att dra/ta bort med arrayindex. Faktum är att detta är ett öppet problem http://jira.mongodb.org/browse/SERVER-1014 , du kan rösta på det.
Lösningen är att använda $unset och sedan $pull:
db.lists.update({}, {$unset : {"interests.3" : 1 }})
db.lists.update({}, {$pull : {"interests" : null}})
Uppdatering:som nämnts i några av kommentarerna är detta tillvägagångssätt inte atomärt och kan orsaka vissa rasförhållanden om andra klienter läser och/eller skriver mellan de två operationerna. Om vi behöver att operationen ska vara atomär kan vi:
- Läs dokumentet från databasen
- Uppdatera dokumentet och ta bort objektet i arrayen
- Ersätt dokumentet i databasen. För att säkerställa att dokumentet inte har ändrats sedan vi läste det, kan vi använda uppdateringen om det aktuella mönstret beskrivs i mongo docs