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

MongoDB聚合管道按行政区统计种名以um结尾树木数量方法

错误原因

你的代码存在两类问题导致报错/结果不符合预期:

  • Python语法层面:字符串嵌套时直接用单引号包裹单引号内容,没有做转义,Python解析到内层第一个单引号就判定字符串结束,直接触发SyntaxError语法报错。
  • MongoDB聚合语法层面:
    • 筛选类条件必须放在$match阶段提前过滤,不能直接写到$group的统计逻辑里
    • $count是独立的聚合管道阶段,不能作为$group的累加器使用,分组计数需要用$sum: 1实现
    • 原正则re.compile('um')是匹配任意位置包含um的字符串,不符合以'um'结尾的需求,需要加结尾锚定符$。
正确聚合代码
import re
from pprint import pprint

# 正则规则:匹配espece字段值以um结尾,$表示字符串结尾位置
end_with_um_regex = re.compile(r'um$')

pipeline = [
    # 第一步:过滤出所有espece字段以um结尾的树木记录
    {"$match": {"espece": end_with_um_regex}},
    # 第二步:按行政区arrondissement分组,统计每组符合条件的树木总数
    {
        "$group": {
            "_id": "$arrondissement",
            "CountNumberTrees": {"$sum": 1}
        }
    }
]

# 执行聚合查询
results = col.aggregate(pipeline)
pprint(list(results))

校验提示:将返回结果中所有分组的CountNumberTrees值求和,如果你的正则调整为匹配任意位置含um(即去掉正则里的$),求和结果会和你之前用count_documents查询得到的全局值25245完全一致,可以用来验证逻辑正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:09:21