在mongoDB中对数组大小字段求和的最佳方法

时间:2014-12-08 19:53:56

标签: python mongodb pymongo

我有一个带有数组字段的文档,我需要在所有文档中总结这个数组的大小。我正在使用python - > PyMongo。

简而言之,将上述查询应用于这组文档应返回6:

{_id: a, array: [a,b]}
{_id: b, array: [c, d, e]}
{_id: c, array: [f]}

在互联网上搜索,我提出了以下解决方案:

value = collection.aggregate([{"$unwind": "$array"}, {"$group": {"_id": "null", "total": {"$sum": 1}}}])

它有效,我按以下方式得到我想要的号码:

count = value['result'][0]['total']

这是我能做的最好的查询吗?有更有效的方法吗?

我对mongo聚合框架不是特别专家,所以我觉得最好问一下。

1 个答案:

答案 0 :(得分:2)

无需为了获得大小而展开数组。

>>> collection.aggregate([{'$group': {'_id': None, 'total': {'$sum': {'$size': '$array'}}}}])
{u'ok': 1.0, u'result': [{u'total': 6, u'_id': None}]}