小编Hyu*_*que的帖子

如何获取文档的数量并以有效的方式过滤它们?(猫鼬)

我正在实现搜索功能,即在 mongoDB 中查找文档。我想.skip(x).limit(x)结果上模拟分页结果,但是我可以获取文档总数(在跳过和限制之前)并立即获取过滤结果吗?

产生预期输出的代码:

db.Datas.find({ type: "Unknown" })
  .then((result) => {
    let count = result.length;
    db.Datas.find({ type: "Unknown" })
      .sort({ createdAt: -1 })
      .skip((req.query.page - 1) * 10)
      .limit(10)
      .then((res) => {
        res.json({ count: count, result: res });
      });
  })
  .catch((err) => {});
Run Code Online (Sandbox Code Playgroud)

但查询两次有点烦人,而且在大型数据库中可能会很慢。我尝试了类似的方法find({}).then(x => { ... }).sort(...) ...,但不起作用,因为它只返回 Promise。

我怎样才能有效地做这些事情?或者只是获取整个文档并跳过,用 JS 方式限制(使用 .splice 等)会更快更高效?

javascript mongoose node.js aggregation-framework

3
推荐指数
1
解决办法
1628
查看次数