查找匹配查询的第一个和最后一个文档?

Posted

技术标签:

【中文标题】查找匹配查询的第一个和最后一个文档?【英文标题】:Find first and last documents matching a query? 【发布时间】:2013-06-24 06:53:48 【问题描述】:

查找与查询匹配的第一个和最后一个文档的最有效方法是什么?可能有大量文档与查询匹配。

(为什么?我正在尝试查找符合我的搜索条件的最旧和最新的文档。)

【问题讨论】:

【参考方案1】:

您可以执行 2 个查询 - 一个按日期升序排序,另一个按日期降序排序。在每个查询中,将结果限制为 1。如果对日期字段进行了索引,那应该是一个非常快速的查询。

【讨论】:

非常感谢!也给你一个。【参考方案2】:

由于countskip 的成本很高,我相信最好的办法是执行两个具有不同排序顺序的查询。还有一个额外的往返,但带有limit 的索引查询非常快。

经常接触旧数据可能是一个问题,因为它迫使 mongo 将旧数据保留在内存中。如果这些最旧的结果比较稳定并且数据总量很大,您可能希望缓存这些结果。但是,如果您的查询模式很复杂,我猜缓存也无济于事。

【讨论】:

以上是关于查找匹配查询的第一个和最后一个文档?的主要内容,如果未能解决你的问题,请参考以下文章

PHP Regex preg_replace 函数仅查找和替换 3 个匹配项中的第一个和最后一个,而不是中间一个

如何按名称查找不匹配的第n个子行?

如何仅查看猫鼬中值的第一个字母来查找所有文档

从与数组上的查询条件匹配的第一个元素中投影特定字段

LeetCode习题——在排序数组中查找元素的第一个和最后一个位置(二分查找)

[34]. 在排序数组中查找元素的第一个和最后一个位置