MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

indexoutofboundsexception в Mongodb java

Само справка за бъдещи посетители. Да предположим, че имаме масив, наречен foo който съдържа 10 елемента. Какво се случва, ако се опитаме да повторим, използвайки следния код?:

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

Отговорът е IndexOutOfBoundsException Причината е проста. Както казах преди foo съдържа 10 елемента, което означава, че имате достъп до тях чрез foo[0] to foo[9] Тъй като индексирането на масива започва от 0 foo[9] съдържа последния елемент във вашия масив (десетия елемент)`

Какво обаче се случва в for цикъл?

Докато итерирате, винаги проверявате i<=foo.length за да продължите. Проблемът е, че когато стойността на i е 9 изразът i<=foo.length(which means i<=10) дава оценка на true .Това означава, че for цикълът ще се изпълнява за последен път. Когато това се случи във вашия цикъл, ще опитате да получите достъп до foo[10] който не съществува и следователно IndexOutOfBoundsException

Така че не забравяйте, че когато искате да итерирате върху масив, вие винаги използвайте i<foo.length

Както и вие разбрахте, решението на вашия проблем е следното:

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. Групиране на документи по двойки с помощта на агрегиране на mongo

  2. MongoDB groupby различно сортиране заедно

  3. Изключение за сериализация на Scala със стойност на изброяване

  4. MongoDB с поддокументи за ограничение на Mongoose

  5. Spring Data MongoDB Repository с потребителско име на колекция