sql >> Databáze >  >> NoSQL >> MongoDB

indexoutofboundsexception v Mongodb java

Pouze odkaz pro budoucí návštěvníky Předpokládejme, že máme pole nazvané foo který obsahuje 10 položek. Co se stane, když se pokusíme iterovat pomocí následujícího kódu?:

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

Odpověď je IndexOutOfBoundsException Důvod je jednoduchý. Jak již bylo řečeno foo obsahuje 10 prvků, což znamená, že k nim máte přístup pomocí foo[0] to foo[9] Protože indexování pole začíná od 0 foo[9] obsahuje poslední prvek ve vašem poli (10. prvek)`

Co se však stane v for smyčka?

Při iteraci vždy zaškrtněte i<=foo.length problém je v tom, že když je hodnota i je 9 výraz i<=foo.length(which means i<=10) vyhodnotí jako true .To znamená, že for smyčka se spustí naposledy. Když se to stane ve vaší smyčce, pokusíte se otevřít foo[10] který neexistuje, a proto IndexOutOfBoundsException

Pamatujte si tedy, že když chcete iterovat pole, vždy použijte i<foo.length

Takže jak jste na to také přišli, řešení vašeho problému je toto:

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. Čtete pole v mongodb?

  2. MongoDB:nedostatek paměti

  3. Vylepšete agregační strukturu MongoDB

  4. Upgrade starší mongo databáze po neúmyslném upgradu mongo verze