我有一些很大的DBObject,我想将其基本信息存储在数组中。我对它们进行计数,以正确的大小初始化数组,然后用它们的基本信息填充它。现在,count方法返回5个对象,但是有6个对象,并且迭代找到了所有对象。
public DBObject[] allDbObjects() {
long count = dbc.coll.count();
System.out.println(count + " results found");
DBObject[] results = new DBObject[(int) count];
int i=0;
DBCursor cursor = dbc.coll.find();
for (DBObject o: cursor) {
System.out.println("Found one project:");
results[i] = new BasicDBObject();
System.out.println(o.get("name"));
results[i].put("name", o.get("name"));
results[i].put("id", o.get("_id"));
results[i].put("description", o.get("description"));
i++;
}
return results;
}
显然,这给了我最后一个对象一个ArrayIndexOutOfBoundsException。它尝试访问不存在的结果[5]。
在mongodb docs之前,根据{{3}},find方法适用于光标。因此基本上,光标认为它首先有5个对象,然后给了我6个对象。
我哪里出错了?
更新:我将其更改为ArrayList,并且可以使用,但是在另一处也做同样的事情。昨天那个很好。今天没有,我得到的错误和上面的代码相同。