2014-12-08 1 views
1

나는 배열 필드가있는 문서가 있고 모든 문서에서이 배열의 크기를 합계해야합니다. 저는 파이썬 -> PyMongo를 사용하고 있습니다. 6 반환해야 문서 세트에 상기 쿼리를 적용 간단히 말해서 mongoDB 배열 크기 필드 합계 가장 좋은 방법

:

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

: 인터넷 주변 검색은

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

, 나는 다음과 같은 솔루션을 함께 왔어요 작동하며 원하는 번호를 다음과 같은 방식으로 얻습니다.

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

내가 할 수있는 쿼리? 더 효율적인 방법이 있습니까?

저는 몽고 집단 프레임 워크에 대해별로 전문적이지 않아서 물어 보는 것이 더 좋을 것이라고 생각했습니다.

+1

예, 이것은 나에게 가장 좋은 방법입니다. –

답변

1

크기를 얻기 위해 배열을 풀지 않아도됩니다.

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

그것은 작동합니다! 또한 더 효율적입니까? 나는 그것이 풀리지 않기 때문에 그것이라고 생각한다. – boh

관련 문제