统计文档
类中有两个实例方法MongoCollection
,您可以调用它们来计算集合中的文档数:
countDocuments()
返回集合中与指定查询匹配的文档数。如果您指定一个空的查询过滤器,该方法将返回集合中的文档总数。estimatedDocumentCount()
返回基于集合元数据的集合中文档数量的估计。使用此方法时不能指定查询。
该estimatedDocumentCount()
方法比该方法返回得更快, countDocuments()
因为它使用集合的元数据而不是扫描整个集合。该countDocuments()
方法返回文档数量的准确计数并支持指定过滤器。
调用该countDocuments()
方法时,您可以选择传递 查询过滤器参数。调用时不能传递任何参数 estimatedDocumentCount()
。
您还可以将可选参数传递给以下任一方法以指定调用的行为:
方法
|
可选参数类
|
描述
|
---|---|---|
countDocuments() |
CountOptions |
您可以使用该
limit() 方法指定要计算的最大文档数或使用该 方法的最大执行时间 maxTime() 。 |
estimatedDocumentCount() |
EstimatedDocumentCountOptions |
您可以使用该
maxTime() 方法指定最长执行时间。 |
这两种方法都将匹配文档的数量作为long
原语返回。
示例
下面的示例估计数据库中movies
集合中的文档数 sample_mflix
,然后返回movies
集合Canada
中包含countries
字段中的文档数的准确计数。
笔记
此示例使用连接字符串连接到 MongoDB 实例。要了解有关连接到 MongoDB 实例的更多信息,请参阅 连接指南。
package usage.examples;
import static com.mongodb.client.model.Filters.eq; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.MongoException; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase;
public class CountDocuments { public static void main(String[] args) { // Replace the uri string with your MongoDB deployment's connection string String uri = "<connection string uri>"; try (MongoClient mongoClient = MongoClients.create(uri)) { MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("movies"); Bson query = eq("countries", "Spain"); try { long estimatedCount = collection.estimatedDocumentCount(); System.out.println("Estimated number of documents in the movies collection: " + estimatedCount); long matchingCount = collection.countDocuments(query); System.out.println("Number of movies from Spain: " + matchingCount); } catch (MongoException me) { System.err.println("An error occurred: " + me); } } } }
如果您运行前面的示例代码,您应该会看到如下所示的输出(确切数字可能因您的数据而异):
Estimated number of documents in the movies collection: 23541
Number of movies from Spain: 755
提示
传统 API
如果您使用的是旧 API, 请参阅我们的常见问题解答页面 以了解您需要对此代码示例进行哪些更改。
官网地址:https://docs.mongodb.com/drivers/java/sync/current/usage-examples/count/