2017-12-12 1 views
0

내가 많은 트윗이 같은 반대 한 몽고 DB의 수 : 여기그룹과

pipeline = [ 
    { 
     "$group": { 
      "_id": { 
       "date": { 
        "$dateToString": { 
         "format": "%Y-%m-%d", 
         "date": "$created_at" 
        } 
       }, 
       "type": "$type" 
      }, 
      "count": { 
       "$sum": 1 
      } 
     } 
    } 
] 
results = mongo.db.tweets.aggregate(pipeline) 

가 있습니다 : 내가 날짜를 입력하여 트윗을 qroup이 코드를 사용하고

{ 
    "_id" : ObjectId("5a2f4a381cb29b482553e2c9"), 
    "user_id" : 21898942, 
    "created_at" : ISODate("2009-03-09T19:48:50Z"), 
    "id" : 1301923516, 
    "place" : "", 
    "retweet_count" : 0, 
    "tweet" : "Save the Date! March 28th Vietnamese Cooking Class! Call to Reserve 312.255.0088", 
    "favorite_count" : 0 
    "type": A 
} 

{ 
    "_id": { 
     "date": "2009-03-17", 
     "type": A 
    }, 
    "count": 4 
, 
{ 
    "_id": { 
     "date": "2009-03-17", 
     "type": B 
    }, 
    "count": 6 
} 

하지만 지금은이 형식으로 결과를 갖고 싶어 : 결과 나는 얻을

,536,
{date: "2009-03-17", A: 4, B: 6, C: 9} 

어쨌든 aggregate을 통해이 문제를 해결할 수 있습니까?

참고 : 나는 당신은 3.6 버전에서 아래 집계 쿼리를 시도 할 수 있습니다 MongoDB를하고 PyMongo

+0

그룹 아래, 푸시 타입 카운트 쌍, 다음 사용하여 마지막 단계를 교체 .4/reference/operator/aggregation/arrayToObject /와 루트를 대체하십시오. –

답변

0

을 사용하고 있습니다.

두 번째 그룹을 추가하여 유형 및 카운트 값 쌍을 만들고 $mergeObjects 뒤에 날짜 키 값을 $arrayToObject과 병합하여 유형 값 키와 카운트 값 쌍을 생성하여 예상 응답을 생성합니다.

$replaceRoot 최상위 수준으로 문서를 승격합니다.

pipeline = [ 
    { 
    "$group": { 
     "_id": { 
     "date": { 
      "$dateToString": { 
      "format": "%Y-%m-%d", 
      "date": "$created_at" 
      } 
     }, 
     "type": "$type" 
     }, 
     "count": { 
     "$sum": 1 
     } 
    } 
    }, 
    { 
    "$group": { 
     "_id": "$_id.date", 
     "typeandcount": { 
     "$push": { 
      "k": "$_id.type", 
      "v": "$count" 
     } 
     } 
    } 
    }, 
    { 
    "$replaceRoot": { 
     "newRoot": { 
     "$mergeObjects": [ 
      { 
      "date": "$_id" 
      }, 
      { 
      "$arrayToObject": "$typeandcount" 
      } 
     ] 
     } 
    } 
    } 
] 

몽고 3.4 버전 :

는 https://docs.mongodb.com/v3 날짜별로

{ 
    "$replaceRoot": { 
    "newRoot": { 
     "$arrayToObject": { 
     "$concatArrays": [ 
      [ 
      { 
       "k": "date", 
       "v": "$_id" 
      } 
      ], 
      "$typeandcount" 
     ] 
     } 
    } 
    } 
} 
+0

정말 고마워요, 매력처럼 작동합니다! –