Spring Data Mongo检查是否有数据或记录

时间:2019-09-03 03:36:28

标签: spring-data-mongodb

我想检查是否有数据或记录,例如:检查员工是否有请假数据。

使用spring数据mongo,最好的方法是什么?

我检查了一下,看来我无法做类似.limit(1)findBy...Limit的事情。

我现在只想到的是:findFirstBy...countBy...

我想要一个更快的表,我将要检查的表具有大约1M数据。

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

顺便说一句,在我的大桌子上……我有一些索引。 Spring数据mongodb是否可以在使用索引的同时获取记录数?

查找优先与计数依据:

使用我近3M的数据并比较findFirstBycountBy之间的速度,findFirstBycountBy快得多。带有上述集合的示例...查找首先执行(0.3s),而执行一次计数(3s)。这只是示例执行上的差异,但是想法是……“首先发现”比“求和”要快。

谢谢!

1 个答案:

答案 0 :(得分:2)

您无需指定要使用的索引。默认情况下,Mongo将根据匹配的列使用索引。 确保在请假列上有索引以加快查询速度。

  

findFirst

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

限制(1)

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

计数

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

要更好地理解这些操作,请尝试对查询运行Explain

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