Mongodb 如何在两个索引之间获取数据

Mongodb 如何在两个索引之间获取数据,mongodb,mongoose,Mongodb,Mongoose,有一个代码,它根据其速率对用户进行排序 const rankings = await Rating.aggregate([{"$group": {_id:"$receiver", value: {$sum: "$rate"}}}]).sort({reputation: "desc"}); 输出如下所示 [ { _id: 'bob', value: 3 }, { _id: 'joe', value: 2 },

有一个代码,它根据其速率对用户进行排序

const rankings = await Rating.aggregate([{"$group": {_id:"$receiver", value: {$sum: "$rate"}}}]).sort({reputation: "desc"});
输出如下所示

[
  { _id: 'bob', value: 3 },
  { _id: 'joe', value: 2 },
  { _id: 'billy', value: 2 },
  { _id: 'joseph', value: 2 },
  { _id: 'kim', value: 1 },
  { _id: 'jane', value: 0 }, ....
]
然而,由于这是一个大于100的长列表,我试图创建一个页面,其中每个页面只显示10个用户。我如何做到这一点

我知道我可以使用slice(index1,index2),但是如果我使用slice(),我担心执行时间会很慢,因为它首先从数据库中检索每个数据,然后再对它们进行切片

这是我应该担心的吗?如果是,有没有办法直接从数据库中获取索引1到索引2之间的数据


谢谢

我认为您需要使用
$skip
$limit
作为聚合管道的一部分

下面的代码将作为示例-

  • 匹配满足
    filterMatchQuery
    对象中指定条件的所有记录

  • 跳过
    skip
    变量中指定的记录数

     await Rating.aggregate([
         { $match: filterMatchQuery }
         { $skip: skip },
         { $limit: limit }
     ]);
    
  • 并将记录数量限制为
    limit
    变量中指定的数量

     await Rating.aggregate([
         { $match: filterMatchQuery }
         { $skip: skip },
         { $limit: limit }
     ]);
    

我希望这会有所帮助。

我认为您需要使用
$skip
$limit
作为聚合管道的一部分

下面的代码将作为示例-

  • 匹配满足
    filterMatchQuery
    对象中指定条件的所有记录

  • 跳过
    skip
    变量中指定的记录数

     await Rating.aggregate([
         { $match: filterMatchQuery }
         { $skip: skip },
         { $limit: limit }
     ]);
    
  • 并将记录数量限制为
    limit
    变量中指定的数量

     await Rating.aggregate([
         { $match: filterMatchQuery }
         { $skip: skip },
         { $limit: limit }
     ]);
    
我希望这有帮助