1
Bson filter = Filters.and(Filters.eq("appId", appId),
                        Filters.eq("ch", ch.getCh()),
                        Filters.gte("updateTime", startSeconds)
                );
long c = mainCollection.count(filter);  //run ok quickly, but it is Deprecated
// long c = mainCollection.countDocuments(filter);  socketTimeout

Java 使用MongoCollection.countDocuments()执行缓慢甚至超时,但不推荐使用的count() 方法是可以的。

4

1 回答 1

0

MongoCollection.estimatedDocumentCount()在旧版 API 中,MongoCollection.count()两者都使用集合的元数据来提供集合的大小。与MongoCollection.countDocuments()执行完整集合扫描的 相比,它们要快得多,但不能接受过滤器。

弃用MongoCollection.count()vs的细节.estimatedDocumentCount()似乎是事务中的一致性问题,并澄清该方法可能不是 100% 准确。

有关类似说明,请参阅Java 使用示例shell 文档。

于 2022-01-10T04:46:32.173 回答