MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

indexoutofboundsexception w języku Mongodb java

Tylko odniesienie dla przyszłych odwiedzających Załóżmy, że mamy tablicę o nazwie foo który zawiera 10 pozycji. Co się stanie, jeśli spróbujemy wykonać iterację za pomocą następującego kodu?:

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

Odpowiedzią jest IndexOutOfBoundsException Powód jest prosty. Jak powiedziałem wcześniej foo zawiera 10 elementów, co oznacza, że ​​możesz uzyskać do nich dostęp za pomocą foo[0] to foo[9] Ponieważ indeksowanie tablic zaczyna się od 0 foo[9] zawiera ostatni element w Twojej tablicy (10. element)`

Co się jednak dzieje w for pętla?

Podczas iteracji zawsze sprawdzasz i<=foo.length aby kontynuować.Problem polega na tym, że gdy wartość i to 9 wyrażenie i<=foo.length(which means i<=10) ocenia jako true .Oznacza to, że for pętla uruchomi się po raz ostatni. Kiedy to się zdarzy w Twojej pętli, spróbujesz uzyskać dostęp do foo[10] który nie istnieje i stąd IndexOutOfBoundsException

Pamiętaj więc, że gdy chcesz iterować po tablicy, zawsze użyj i<foo.length

Więc jak ty też to odkryłeś, rozwiązanie twojego problemu jest następujące:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaki jest silnik JavaScript, który uruchamia powłokę mongoDB?

  2. Jak można reprezentować pola MongoDB GeoJSON w schemacie Mongoose?

  3. MongoDB jako baza danych szeregów czasowych

  4. Wiele zapytań w zapytaniu mongodb

  5. iptables blokuje lokalne połączenie z mongodb