MongoDB java-driver-3.2.2计数结果来自find() - 方法

时间:2016-06-09 09:39:26

标签: java mongodb count find mongodb-java

我正在尝试计算find()方法的结果,但它不起作用。我正在使用mongodb-driver-3.2.2mongodb-driver-core-3.2.2进行JAVA。

这是我用来连接MongoDB的代码

MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("database_name");
MongoCollection<Document> collection = database.getCollection("collection_name");

我使用以下代码搜索MongoDb:

collection.find(eq("status", 1));

方法“.count()”仅适用于整个集合,如下所示:

long a = collection.count();

但是当我尝试将它与find()方法结合使用时,它不起作用:

long a = collection.find(eq("status", 1)).count();

错误:

The method count() is undefined for the type FindIterable<Document>

所以,我的解决方案是:

long a = 0;
FindIterable<Document> results = collection.find(eq("status", 1));
for (Document current : results ) {
    a++;
}

我不喜欢这个解决方案。是否有其他解决方案来计算结果?

2 个答案:

答案 0 :(得分:1)

Count是集合对象上的方法,而不是FindIterable上的方法。它将过滤器作为可选参数,因此要留在过滤器世界中:

collection.count(eq("status", 1));

答案 1 :(得分:0)

试试这个:

collection.count(new Document().append("status",1));