sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan fjerner man i mongoDb et array-element ved dets indeks?

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


  1. Sådan udelukker du nogle felter fra dokumentet

  2. Sådan gør du:Indekser data fra S3 ved hjælp af CDP Data Hub

  3. MongoDB $toBool

  4. Ember data-hierarki på flere niveauer med indlejret altid