我正在将 MongoDB 与 Java 驱动程序一起使用。
我编写了一个查询,用于查找数据中每个区域的最小年份。
完整代码:
public void minYearPerRegion() {
for (int i = 0; i < uniqueRegions.size(); i++) {
BasicDBObject query = new BasicDBObject("Region", uniqueRegions.get(i));
BasicDBObject field = new BasicDBObject("Year", 1)
.append("Region", 1)
.append("Population", 1);
cursor = coll.find(query,field).sort(new BasicDBObject("Year",1)).limit(1);
try {
List<DBObject> documents = new ArrayList<DBObject>();
for (DBObject dbObject : cursor) {
DBObject o = cursor.next();
documents.add(o);
}
System.out.println("Document contains: " + documents.size() + " document/s");
} finally {
cursor.close();
}//end finally
}//end for
}//end minYearPerRegion
我试图将我的发现存储为单独的文档,但光标似乎将其呈现为对象。 我尝试执行以下操作来拆分对象:
List<DBObject> documents = new ArrayList<DBObject>();
for (DBObject dbObject : cursor) {
DBObject o = cursor.next();
documents.add(o);
}
System.out.println("Document contains: " + documents.size() + " document/s");
然而,打印行总是说文档列表只包含一个文档,而实际上它应该包含 4 个文档(因为有 4 个唯一区域)。
请告诉我如何从光标处单独获取每个文档并将其存储在数组或列表中。
最佳答案
您可以调用toArray()
直观地,它返回 List<DBObject>
。您将收到一份文档,因为您通过了 limit(1)
到光标。
关于Java、MongoDB 将游标转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25247822/