我想通过 $limit 和 $skip 对我的查询结果进行分页,并获得通过查询的文档总数。
我现在对结果进行分页是这样的:
const startIndex = (page - 1) * limit
const endIndex = page * limit
const resultObject = {}
resultObject.totalCount = await model.countDocuments(query).exec()
if (endIndex < results.totalCount)
resultObject.next = {page: page + 1, limit}
if (startIndex > 0)
results.prev = {page: page - 1, limit}
resultObject.results = await query.limit(limit).skip(startIndex).exec()
这会产生 2 个问题:
我执行查询两次(你甚至可以在 1 中执行此操作吗?)
出于某种原因,当我的查询是一个聚合时,countDocuments即使在我执行时返回 0,query.exec()我也会得到正确的结果(> 0)
所以我的问题是如何在获取文档计数的同时对结果进行分页,就像我现在只使用 1 个查询(并使其与聚合查询一起使用)这样我就可以构建我的resultObject
小怪兽爱吃肉
相关分类