spring-data-mongodb - Spring Data Mongo 检查是否有数据或记录

标签 spring-data-mongodb

我想检查是否有这样的数据或记录:检查员工是否有休假数据。

使用 spring data mongo,执行此操作的最佳方法是什么?

我检查过,似乎我无法执行诸如 .limit(1)findBy...Limit 之类的操作。

我现在唯一想到的是:findFirstBy...countBy...

我想要更快的,我要检查的表有或多或少的 1M 数据。

有更好的方法来检查吗? (findFirst vs countBy vs BETTER)?

顺便说一下,在我更大的表中......我有一些索引。 spring data mongodb 是否可以在使用索引时获取记录数?

查找第一个与计数依据:

根据我近 3M 的数据,比较 findFirstBycountBy 之间的速度,findFirstBycountBy 快得多>。上述集合的一个例子... find 首先执行(0.3 秒),而 count by 执行(3 秒)。这只是一个示例执行差异,但其想法是...首先查找比计数更快。

谢谢!

最佳答案

您无需指定要使用哪个索引。 Mongo默认会使用基于匹配列的索引。 确保休假列上有索引以加快查询速度。

findFirst

  • 将返回第一个匹配的实例,因此通常是最快的,因为它只会扫描索引并在找到任何匹配项后立即返回

limit(1)

  • 几乎与找到匹配项后退出的速度一样快。如果添加排序条件,它会变慢,因为它需要根据排序顺序获取正确的元素,而不仅仅是任何元素

count

  • 通常会花费最长的时间,因为它需要扫描整个集合,而不仅仅是查找。如果你在离开时使用sparseIndex,计数操作将显着加快

为了更好地理解这些操作,请尝试运行 Explain关于查询。

注意 - 查询性能与调用它的客户端无关。

关于spring-data-mongodb - Spring Data Mongo 检查是否有数据或记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57764747/

相关文章:

java - MongoPersistentEntityIndexResolver - 在类型中找到字段 'variable' 的循环

java - Spring Data MongoDB - 忽略空对象

mongodb - 如何在 Spring Boot 中禁用 GridFS MD5 计算?

java - Spring Data mongoTemplate.save() 行为

spring-data - 在正确的集合中创建索引

java - 是否可以在 spring-data-mongodb 中注入(inject)自定义 Jackson ObjectMapper?

Mongodb:从两个集合中收集数据的正确方法?

mongodb - Spring Data Mongo 嵌入式测试失败,错误为 "Unrecognized pipeline stage name: ' $graphLookup'"

mongodb - spring-data-mongo,如何从 mongo 返回保存的对象的 _id ?

java - Spring Data Mongo 1.9版本已连接但无法进行CRUD操作