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 } ]);