You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单次MongoDB查询同时返回匹配文档与匹配计数?

MongoDB 单次查询同时获取匹配文档与计数

当然可以通过单次查询同时拿到匹配的文档和对应计数,最直接高效的方式是利用聚合管道的$facet阶段,一次请求完成两个操作,避免多次查询数据库。

具体实现代码

db.collection.aggregate([
  // 第一步:过滤出符合employeeNumber条件的文档
  { $match: { employeeNumber: employeeNumber } },
  // 第二步:用$facet拆分两个结果分支
  { $facet: {
      // 分支1:返回所有匹配的文档
      matchedDocuments: [], // 空数组直接保留过滤后的所有文档
      // 分支2:统计匹配文档的总数
      totalCount: [ { $count: "count" } ]
    }
  }
])

结果说明

执行后会返回一个包含单个对象的数组,结构示例如下:

[
  {
    "matchedDocuments": [/* 所有匹配指定employeeNumber的文档列表 */],
    "totalCount": [ { "count": 3 } ] // 假设匹配到3条数据
  }
]

注意事项

  • 该方案要求MongoDB版本在3.4及以上,$facet是这个版本开始支持的特性。
  • 不要采用客户端先调用find再调用countDocuments的方式,本质是两次数据库请求,效率远不如聚合管道的单次查询。

内容的提问来源于stack exchange,提问作者SosijElizabeth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:25:16