sql >> Database >  >> NoSQL >> MongoDB

indexoutofboundsuitzondering in Mongodb java

Gewoon een referentie voor toekomstige bezoekers Stel dat we een array hebben met de naam foo die 10 items bevat. Wat gebeurt er als we proberen te herhalen met behulp van de volgende code?:

for(int i = 0;i<=foo.length;i++){
   //some code that uses foo[i] here
}

Het antwoord is een IndexOutOfBoundsException De reden is simpel. Zoals eerder gezegd foo bevat 10 elementen, wat betekent dat je ze kunt openen met foo[0] to foo[9] Aangezien array-indexering begint vanaf 0 foo[9] bevat het laatste element in uw array (het 10e element)`

Wat gebeurt er echter in de for lus?

Terwijl je herhaalt, controleer je altijd i<=foo.length om door te gaan. Het probleem is dat wanneer de waarde van i is 9 de uitdrukking i<=foo.length(which means i<=10) evalueert tot true .Dat betekent dat de for loop wordt nog een laatste keer uitgevoerd. Wanneer dit in uw loop gebeurt, probeert u toegang te krijgen tot foo[10] die niet bestaat en vandaar de IndexOutOfBoundsException

Onthoud dus dat wanneer u een array wilt herhalen, u altijd gebruik i<foo.length

Dus zoals jij het ook hebt ontdekt, is de oplossing voor je probleem dit:

for(int i=0; i< field.length; i++){
    String[] field = allFields.split(",");
    String field1 = "$"+field[i];
    BsonField includeFields = Accumulators.first(field[i], field1);
    includeList.add(includeFields);
}



  1. Kan mongo arraygegevens opwaarderen?

  2. Juiste manier om veld toe te voegen aan de gebruikersverzameling in meteor

  3. pymongo:duplicaten verwijderen (kaart verkleinen?)

  4. Groep en som volgens het positiepercentage MongoDb Aggregation