sql >> Databasteknik >  >> NoSQL >> MongoDB

indexoutofboundsexception i Mongodb java

Bara en referens för framtida besökare Anta att vi har en array som heter foo som innehåller 10 artiklar. Vad händer om vi försöker iterera med följande kod?:

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

Svaret är en IndexOutOfBoundsException Anledningen är enkel. Som sagt tidigare foo innehåller 10 element vilket betyder att du kan komma åt dem med foo[0] to foo[9] Eftersom arrayindexering börjar från 0 foo[9] innehåller det sista elementet i din array (det 10:e elementet)`

Vad händer dock i for slinga?

När du itererar kontrollerar du alltid i<=foo.length för att fortsätta. Problemet är att när värdet på i är 9 uttrycket i<=foo.length(which means i<=10) utvärderas till true .Det betyder att for loop kommer att köras för en sista gång. När detta händer i din loop kommer du att försöka komma åt foo[10] som inte existerar och därav IndexOutOfBoundsException

Så kom ihåg att när du vill iterera över en array alltid använd i<foo.length

Så som du också kom på det är lösningen på ditt problem denna:

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. Hur får man tillbaka det nya värdet efter en uppdatering i en inbäddad array?

  2. Mongodb Schema för inlägg och delningar

  3. Hur kan jag uppdatera ett inbäddat objekt i en ArrayList i Morphia

  4. Hur spolar jag redis db från python redis?