所以我有我的pymongo游标和非常简单的循环来获得总和。我需要获取该值,我也是Mongo的新手,我的方法可能不是最好的做法。
cursor = db.reportsColl.aggregate([
{"$unwind": "$conditions"},
{"$group": {"_id": "$_id", "sum": { "$sum": 1}}}])
x = 0
for result in cursor:
x+= result['sum']
print(x)
我试图在这里使用lambda表达式,但我觉得我有点失落。
total = [(lambda x: x+result['sum'])(x) for _ in cursor]
有什么想法吗?
答案 0 :(得分:2)
您正在构建一个不完整总和的列表,这是一种浪费。不要对列表效果使用列表理解。
你甚至不需要这样做。请使用sum()
function代替generator expression:
total = sum(result['sum'] for result in cursor)
答案 1 :(得分:0)
你唯一想做的就是SUM。
所以,你可以尝试这样做:
In [9]: sum([1, 2, 3])
Out[9]: 6`
因此,通过这种方式,您的代码可以像:
total = sum([result['sum'] for result in cursor])