gpt4 book ai didi

mongodb - Mongoose 限制/偏移和计数查询

转载 作者:IT老高 更新时间:2023-10-28 11:14:41 25 4
gpt4 key购买 nike

查询性能有点奇怪...我需要运行一个查询,它计算文档总数,并且还可以返回一个可以限制和偏移的结果集。

所以,我总共有 57 个文档,用户想要 10 个文档偏移 20。

我可以想到两种方法,首先是查询所有 57 个文档(作为数组返回),然后使用 array.slice 返回他们想要的文档。第二个选项是运行 2 个查询,第一个使用 mongo 的 native 'count' 方法,然后使用 mongo 的 native $limit 和 $skip 聚合器运行第二个查询。

您认为哪个扩展性更好?在一个查询中完成所有操作,还是运行两个单独的查询?

编辑:

// 1 query
var limit = 10;
var offset = 20;

Animals.find({}, function (err, animals) {
if (err) {
return next(err);
}

res.send({count: animals.length, animals: animals.slice(offset, limit + offset)});
});


// 2 queries
Animals.find({}, {limit:10, skip:20} function (err, animals) {
if (err) {
return next(err);
}

Animals.count({}, function (err, count) {
if (err) {
return next(err);
}

res.send({count: count, animals: animals});
});
});

最佳答案

我建议你使用 2 个查询:

  1. db.collection.count() 将返回项目总数。此值存储在 Mongo 中的某个位置,不会计算出来。

  2. db.collection.find().skip(20).limit(10) 这里我假设你可以使用某个字段的排序,所以不要忘记添加索引在这个领域。这个查询也很快。

我认为您不应该查询所有项目,而是执行跳过和获取,因为稍后当您拥有大数据时,您将在数据传输和处理方面遇到问题。

关于mongodb - Mongoose 限制/偏移和计数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13935733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com