Вы пишете в позицию в массиве, которая находится за пределами.
Когда вы объявляете свой массив
Users[] ccuser;
его длина изначально 0
, там нет места для каких-либо элементов. Затем вы добавляете один элемент, получая длину 1
:
ccuser ~= new Users();
Вот почему первая строка
db.ccuser[0] = user1;
работает, но второй выдает ошибку:
db.ccuser[1] = user2;
Вы пишете в индекс 1
, но это уже после конца массива.
Вы можете либо:
Вместо этого добавить массив:
db.ccuser ~= user2;
Или увеличьте длину массива, чтобы освободить место:
db.ccuser.length = 2;
db.ccuser[1] = user2; // now there is room for two elements, no error