我有一个带有数组字段的文档,我需要在所有文档中总结这个数组的大小。我正在使用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聚合框架不是特别专家,所以我觉得最好问一下。
答案 0 :(得分:2)
无需为了获得大小而展开数组。
>>> collection.aggregate([{'$group': {'_id': None, 'total': {'$sum': {'$size': '$array'}}}}])
{u'ok': 1.0, u'result': [{u'total': 6, u'_id': None}]}