获取MongoDB中其他两个条目之间的所有条目
Get all the entries between two other entries in MongoDB
我有一个包含对象的MongoDB集合,其_id属性是一个字符串。
我想对该集合执行.find()操作,对返回的游标执行.sort()操作。然后,.toArray()的操作将按特定顺序给我一个文档数组。然而,我不想提取所有这些文件,只想提取其中两份文件之间的文件。
现在,我知道我可以执行.toArray(),在一个数组中获得所有结果,然后选择两个文档之间的间隔,但这会花费太多资源。如果可能的话,我希望在执行.toArray()之前选择该间隔,或者一般来说,以最节省资源的方式。
我试图实现的是.limit()和.skip()(分页)的替代方案,但通过提供"开始"answers"结束"文档的_id来精确定位间隔。
例如,假设.find().sort({_id: 1}).toArray()
给出:
{_id: "a", a: "First entry"},
{_id: "bar", a: "Third entry"},
{_id: "bar2", a: "Fourth entry"},
{_id: "bar3", a: "Fifth entry"},
{_id: "bar4", a: "Sixth entry"},
{_id: "foo", a: "SEcond entry"}
我需要这样的东西find().sort({_id: 1}).allAfter({_id: "bar"}).allBefore({_id: "bar4"}).toArray(...);
给我:
{_id: "bar2", a: "Fourth entry"},
{_id: "bar3", a: "Fifth entry"},
您所说的是基于范围的分页(范围在排序上)。通过跟踪上一页和下一页的边缘,您可以轻松地做到这一点。以下是一些现有的答案:
基于范围的分页mongodb
如何在MongoDB中使用范围查询进行分页?
http://groups.google.com/group/mongodb-user/browse_thread/thread/dc46592112735bf0/a5c700b1283537d8
如果这还不足以满足您的需求,请告诉我。
似乎是在暗示插入顺序:"bar"插入在"a"之前,"foo"插入但在"bar2"之后。
您不能在mongodb中按插入顺序进行查询(可能是因为mongo有时会对集合中的文档进行重新排序,例如,如果您对"bar2"进行了更新,但没有足够的分配空间,那么mongo可以将其物理地放在"bar4"之后)。
如果您可以生成整数/长ID,或者添加一个插入时间/日期字段,那么您的问题将很容易解决。
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 在Google Analytics中跟踪用户,但只能在两个操作之间跟踪
- 如何在两个不同的iframe HTML之间进行通信
- 有效地获取两个区间之间的随机整数
- 如何用moment.js列出两个日期之间的所有月份
- jQuery在两个字符串标识符之间选择HTML
- JavaScript中的RegEx:两个标签之间的内容
- moment.js在两个时区格式的日期之间存在差异
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- 计算HTML表TD中两个数字之间的百分比
- 用时间戳获取两个不同日期之间的时间差
- 通过共享服务在两个不同ng应用程序中的控制器之间共享数据
- 如何在jQuery中获取两个事件之间的时间差
- 通过node.js和socket.io在两个用户之间发送消息
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 有没有一种方法可以从两个标签之间提取文本,并以我选择的格式输出
- 在两个多选字段之间移动选项
- 通过变量在两个数字之间切换
- 两个集合mongodb之间的关系
- 如何在Protractor中比较两个窗口之间两个元素的值