DBCollection.count并不计算其所有DBObjects

时间:2019-04-10 08:21:43

标签: java mongodb

我有一些很大的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,并且可以使用,但是在另一处也做同样的事情。昨天那个很好。今天没有,我得到的错误和上面的代码相同。

0 个答案:

没有答案