聚合 - 使用 pymongo 计算记录
Aggregate - count records with pymongo
我想用pymongo统计匹配记录。
我查阅了文档:https://docs.mongodb.com/manual/reference/operator/aggregation/group/#group-by-month-day-and-year
我知道我应该这样做:
db.foo_baz.aggregate([{'$group': {'_id': '$baz_id', 'count': {'$sum': 1}}}])
但是,我收到此错误:
File "/usr/lib/python3.6/site-packages/mongomock/collection.py", line 1531, in aggregate
from_field = key.replace('$', '')
AttributeError: 'int' object has no attribute 'replace'
添加评论
我认为 pymongo 会根据这个 mongodb 语句评估它:
db.foo_baz.aggregate({{$group: {_id: '$baz_id', count: {$sum: 1}}}])
当从 mongodb 控制台 运行 时,这给了我预期的结果,在我的例子中是 {"_id" : NumberInt("1234"), "count" : 1}
。
我做错了什么?我正在使用 pymongo 3.4 和 python 3.6 以及 mongomock 3.7。
我也试过用 "1"
替换 1
,但没有崩溃,但给出了错误的结果:({"_id" : NumberInt("1234"), "count" : NumberInt("0")}
)
好吧,显然这是 mongomock 中的一个错误,升级到 3.8 后我得到了预期的行为。
我想用pymongo统计匹配记录。 我查阅了文档:https://docs.mongodb.com/manual/reference/operator/aggregation/group/#group-by-month-day-and-year
我知道我应该这样做:
db.foo_baz.aggregate([{'$group': {'_id': '$baz_id', 'count': {'$sum': 1}}}])
但是,我收到此错误:
File "/usr/lib/python3.6/site-packages/mongomock/collection.py", line 1531, in aggregate
from_field = key.replace('$', '')
AttributeError: 'int' object has no attribute 'replace'
添加评论
我认为 pymongo 会根据这个 mongodb 语句评估它:
db.foo_baz.aggregate({{$group: {_id: '$baz_id', count: {$sum: 1}}}])
当从 mongodb 控制台 运行 时,这给了我预期的结果,在我的例子中是 {"_id" : NumberInt("1234"), "count" : 1}
。
我做错了什么?我正在使用 pymongo 3.4 和 python 3.6 以及 mongomock 3.7。
我也试过用 "1"
替换 1
,但没有崩溃,但给出了错误的结果:({"_id" : NumberInt("1234"), "count" : NumberInt("0")}
)
好吧,显然这是 mongomock 中的一个错误,升级到 3.8 后我得到了预期的行为。