javascript - 如何偏移 Mongoose 排序查询以在特定文档之后开始

标签 javascript node.js mongodb mongoose

我目前有以下查询来返回给定状态计数个最近更新的帖子。

var query = Post.find()
  .where('status').equals(status)
  .sort('-updated')
  .limit(count);

如果 status 为“approved”且 count 为 3,那么我的结果将如下所示:

[
  {
    "id": "test1",
    "updated": "2015-11-30T16:51:54.988Z",
    "status": "approved",
  },
  {
    "id": "test2",
    "updated": "2015-11-30T16:51:52.125Z",
    "status": "approved",
  },
  {
    "id": "test3",
    "updated": "2015-11-30T16:51:50.469Z",
    "status": "approved",
  }
]

我需要能够指定一个 id 来抵消我的结果。

例如,如果 status 为“approved”,count 为 2,偏移 ID 为“test1”,则结果应为:

[
  {
    "id": "test2",
    "updated": "2015-11-30T16:51:52.125Z",
    "status": "approved",
  },
  {
    "id": "test3",
    "updated": "2015-11-30T16:51:50.469Z",
    "status": "approved",
  }
]

因此,我按更新后的属性进行排序,但结果只能从偏移 id 之后的文档开始。

最佳答案

我想排除您不需要跳过的 id,没有任何其他解决方案:

var query = Post.find({
        $and: [{
            status: status
        }, {
            id: {
                $nin: ['test1']
            }
        }]
    })
    .sort('-updated')
    .limit(count);

使用$nin,您可以使用如下所示的 ids 数组来排除多个 id:['test1', 'test2', 'etc.. .']

关于javascript - 如何偏移 Mongoose 排序查询以在特定文档之后开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34018137/

相关文章:

javascript - setUninstallURL - 在 Safari 和 Firefox 中?

javascript - 在 Node.js C++ 插件中发出事件

node.js - NodeJS - MongoDB 触发器

javascript - 在 jQuery 中控制 wrap 和 unwrap 方法

javascript - Material-ui 从 react-router 添加到单选按钮组件的链接

node.js - 如何在 node.js 中访问共享网络驱动器

mongodb - Mongoose 更新上的electionId 是什么?

node.js - 如何在 mongodb 中聚合使用 $match 作为可选参数

javascript - Bootstrap 表从选定行获取数据

node.js - Cleverbot.io API 无法正常工作