mongodb - MongoDB中基于光标的分页,对2个属性进行排序
问题描述
我的最终目标是在 MongoDB 中实现基于光标的分页,同时对 2 个属性进行排序。
假设我们有以下集合:
+--------------------------------------+------+-------+
| _id | cost | vip |
+--------------------------------------+------+-------+
| ObjectId("5dae005e665fc34b03c70f8a") | 700 | true | <-- first query
| ObjectId("5dae005e665fc34b03c70f8c") | 50 | true | <-- first query
| ObjectId("5dae005e665fc34b03c70f88") | 1 | true | <-- second query
| ObjectId("5dae005e665fc34b03c70f8b") | 1200 | false | <-- second query
| ObjectId("5dae005e665fc34b03c70f87") | 400 | false |
| ObjectId("5dae005e665fc34b03c70f89") | 300 | false |
+--------------------------------------+------+-------+
我们希望结果排序:{vip: -1, cost: -1}
,限制为 2。第一个查询将返回第 1 行和第 2 行,结束光标为 (ObjectId("5dae005e665fc34b03c70f8c"))。
有了这些信息,我如何获取接下来的 2 行(即第 3 + 4 行)?
我尝试使用以下过滤器,但没有帮助。
{_id: {$lt: ObjectId('5dae005e665fc34b03c70f8c')}, cost: {$gt: 1}}
谢谢你的帮助。
解决方案
您可以使用跳过方法
db.getCollection('collection').find({}).sort({vip: -1, cost: -1}).skip(2).limit(2)
推荐阅读
- cmake - 仅当用户构建 doc 时才让 CMake 搜索 doxygen
- sql-server - 订单明细查询
- angular - 从 AngularFireList 获取项目的问题
- python - Tkinter 没有正确更新标签
- jenkins - 当节点将自身连接到 Jenkins 时执行作业
- python - 在 Python 中的单元格之间创建一个间隔为 x 秒的日期时间数组
- c# - 如何防止 ASP.NET Core 在空请求主体上将模型状态标记为无效?
- excel - Excel 添加查询方法
- c - C中的向量结构
- c# - Parallel.ForEach 在 3 个收益返回后挂起?