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

indexoutofboundsexception i Mongodb java

Bare en reference til fremtidige besøgende Antag, at vi har et array kaldet foo som indeholder 10 elementer. Hvad sker der, hvis vi forsøger at gentage ved hjælp af følgende kode?:

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

Svaret er en IndexOutOfBoundsException Årsagen er enkel. Som sagt før foo indeholder 10 elementer, hvilket betyder, at du kan få adgang til dem ved hjælp af foo[0] to foo[9] Da matrixindeksering starter fra 0 foo[9] indeholder det sidste element i dit array (det 10. element)`

Hvad sker der dog i for sløjfe?

Mens du gentager, tjekker du altid i<=foo.length for at fortsætte. Problemet er, at når værdien af ​​i er 9 udtrykket i<=foo.length(which means i<=10) evalueres til true .Det betyder, at for loop vil køre for en sidste gang. Når dette sker i din loop, vil du prøve at få adgang til foo[10] som ikke eksisterer og derfor IndexOutOfBoundsException

Så husk, at når du vil iterere over et array, du altid brug i<foo.length

Så som du også fandt ud af det, er løsningen på dit problem denne:

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. MongoDB - få dokumenter med max attribut per gruppe i en samling

  2. Sådan gør du findAll i den nye mongo C#-driver og gør den synkron

  3. MongoDB-fejl:mongodb-10gen E:Underprocessen /usr/bin/dpkg returnerede en fejlkode (1)

  4. Læsning, skrivning og lagring af JSON med Node på Heroku