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

indexoutofboundsexception in Mongodb java

Solo un riferimento per futuri visitatori Supponiamo di avere un array chiamato foo che contiene 10 elementi. Cosa succede se proviamo a eseguire l'iterazione utilizzando il seguente codice?:

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

La risposta è una IndexOutOfBoundsException Il motivo è semplice. Come detto prima foo contiene 10 elementi, il che significa che puoi accedervi usando foo[0] to foo[9] Poiché l'indicizzazione dell'array inizia da 0 foo[9] contiene l'ultimo elemento nell'array (il decimo elemento)`

Cosa succede però nel for ciclo?

Durante l'iterazione controlli sempre i<=foo.length per continuare. Il problema è che quando il valore di i è 9 l'espressione i<=foo.length(which means i<=10) restituisce true .Ciò significa che il for il loop verrà eseguito per l'ultima volta. Quando ciò accade nel tuo loop, proverai ad accedere a foo[10] che non esiste e quindi IndexOutOfBoundsException

Quindi ricorda che quando vuoi scorrere un array devi sempre usa i<foo.length

Quindi, come anche tu hai capito, la soluzione al tuo problema è questa:

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);
}