在Google Colab中实现MongoDB按出版商分组求和的聚合查询问题
问题解决:MongoDB按出版商分组并求和畅销周数
你的聚合查询返回总和为0的核心原因是字段引用语法错误,MongoDB聚合管道中必须用$字段名的格式来引用文档内的字段,而非直接写字段名字符串。
修正后的代码
Query = collection.aggregate( [ {'$group': {'_id': '$publisher', 'Cantidad_total': { "$sum": '$weeks_on_list' }}} ] ) for elemento in Query: pprint.pprint(elemento)
错误细节说明
- 原代码里
_id: 'publisher'是将字符串publisher作为固定分组键,导致所有文档被归为同一组,_id固定为publisher。 $sum: 'weeks_on_list'是把字符串weeks_on_list当作求和值,MongoDB会将非数值类型的求和项判定为0,最终总和自然为0。- 修正后用
$publisher和$weeks_on_list,才能正确关联文档中对应的字段,实现按出版商分组、对每组weeks_on_list字段值求和的需求。
你提到的Colab中运算符需用"$lt"的情况,本质是Python字符串中需要用引号包裹MongoDB操作符(避免被Python解析为变量),但聚合管道里的字段引用$字段名语法是通用规则,不受运行环境影响。
内容的提问来源于stack exchange,提问作者Francisca Aguayo
相关产品推荐
相关产品推荐

