MongoDB统计文档数组字段中大于指定值的元素个数
MongoDB 实现方案
通过聚合管道即可完成单文档内数组符合条件元素的计数,无需额外关联操作,核心逻辑是先过滤数组中大于10的元素,再统计过滤后数组的长度。
完整查询语句
将代码中your_collection替换为你实际的集合名即可执行:
db.your_collection.aggregate([ { $project: { _id: 0, CustomerId: 1, Count: { $size: { $filter: { input: "$dwell", cond: { $gt: ["$$this", 10] } } } } } } ])
语句说明
$project:指定最终返回的字段,设置_id:0是为了不返回默认的_id字段,如果需要保留_id可以删掉该行配置$filter:遍历输入的dwell数组,cond里的判断规则为保留元素值(即$$this)大于10的项,返回过滤后的新数组$size:计算过滤后数组的长度,结果赋值给Count字段
结果验证
针对给出的示例数据,执行上述语句后返回的结果完全匹配期望:
{"CustomerId": 13038, "Count": 1} {"CustomerId": 12036, "Count": 2}
注:该语法兼容MongoDB 3.2及以上所有正式版本,是目前这类数组计数场景性能最优的实现方式。
内容的提问来源于stack exchange,提问作者Mehmet Serkan Ekinci
相关产品推荐
相关产品推荐

