MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

indexoutofboundexception in Mongodb java

Nur eine Referenz für zukünftige Besucher Angenommen, wir haben ein Array namens foo die 10 Elemente enthält. Was passiert, wenn wir versuchen, mit dem folgenden Code zu iterieren?:

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

Die Antwort ist eine IndexOutOfBoundsException Der Grund ist einfach. Wie zuvor gesagt foo enthält 10 Elemente, was bedeutet, dass Sie mit foo[0] to foo[9] darauf zugreifen können Da die Array-Indizierung bei 0 beginnt foo[9] enthält das letzte Element in Ihrem Array (das 10. Element)`

Was passiert aber in der for Schleife?

Während Sie iterieren, überprüfen Sie immer i<=foo.length um fortzufahren. Das Problem ist, dass wenn der Wert von i ist 9 der Ausdruck i<=foo.length(which means i<=10) wird zu true ausgewertet .Das bedeutet, dass der for Die Schleife wird ein letztes Mal ausgeführt. Wenn dies in Ihrer Schleife passiert, versuchen Sie, auf foo[10] zuzugreifen die nicht existiert und daher die IndexOutOfBoundsException

Denken Sie also daran, dass Sie, wenn Sie über ein Array iterieren möchten, immer Verwenden Sie i<foo.length

Wie Sie es auch herausgefunden haben, lautet die Lösung für Ihr Problem:

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