Counting Documents
模板 API 提供多种方法来计算匹配给定条件的文档数目。其中一个概述如下。
template.query(Person.class)
.matching(query(where("firstname").is("luke")))
.count();
在 SpringData MongoDB 的 3.x 之前的版本中,计数操作使用 MongoDB 的内部集合统计数据。随着 MongoDB Transactions 的引入,这不再可行,因为统计数据不能正确反映在事务期间的潜在更改,因此需要基于聚合的计数方法。因此在 2.x 版本中,MongoOperations.count()
在没有进行事务时将使用集合统计数据,如果有事务则使用聚合变量。
从 Spring Data MongoDB 3.x 开始,任何 count
操作都会使用基于聚合的计数方法通过 MongoDB 的 countDocuments
,而不管是否存在筛选条件。如果应用程序对使用集合统计信息有局限性,MongoOperations.estimatedCount()
提供了一个备选方案。
通过将 |
MongoDB 的本机
<1> 使用 `$near` 对源查询进行计数。 <1> 现在使用 `$center` 重写查询,其中 `$geoWithin` 用 `$center` 代替。 <1> 使用 `$minDistance` 和 `$maxDistance` 对源查询进行计数,其中 `$near` 用 `$minDistance` 代替。 <1> 重写的查询现在将 `$nor` `$geowithin` 条件相结合,以解决不支持 `$minDistance` 的问题。 |