【发布时间】:2021-01-23 05:41:49
【问题描述】:
我想通过 $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()
这会产生两个问题:
- 我执行了两次查询(您甚至可以在 1 中执行此操作吗?)
- 由于某种原因,当我的查询是一个聚合时,
countDocuments返回 0 即使我执行query.exec()我得到正确的结果 (> 0)
所以我的问题是如何在获取文档计数的同时,像现在只使用 1 个查询(并使其与聚合查询一起使用)对结果进行分页,以便我可以构建我的 resultObject
【问题讨论】:
标签: javascript node.js mongodb mongoose