2017-12-01 6 views
0

MongoDB 집계 파이프 라인을 만들었습니다. 내 데이터를 방과 연도별로 그룹화하여 아래 결과를 얻습니다. 그러나 나는 1 년에 평균 방을 얻고 싶습니다. 즉, 년 평균 객실 거래 수익 그룹을 가져오고 싶습니다.

let pipeline = [ 
{ 
    "$group" : { 
    "_id" : { "room" : "$room", "year" : "$year"}, 
    "total_revs" : { "$sum" : 1 }, 
    "average_stay" : { "$avg" : { "$subtract": ["$endDate", "$startDate"]}}, 
    "average_leadtime"  : { "$avg" : { "$subtract": ["$startDate", "$orderDate"]}}, 
    "average_party_size" : { "$avg" : "$numberOfPeople" }, 
    "transaction_revenue" : { "$avg": "$tranFee" } 
    } 
} 
] 

let promise = HReservation.aggregate(pipeline).exec(); 
promise.then(result => res.send(result)) 
.catch(err => res.status(500).send(err)); 

이 파이프 라인은 다음과 같은 결과를 : 여기에

내 파이프 라인입니다

[ 
{ 
    "_id": { 
     "year": 2013 
    }, 
    "total_revs": 66100, 
    "average_stay": 233698275.34039333, 
    "average_leadtime": 6089703358.547655, 
    "average_party_size": null, 
    "transaction_revenue": 10.53087821482602 
}, 
{ 
    "_id": { 
     "year": 2012 
    }, 
    "total_revs": 60936, 
    "average_stay": 235630563.21386373, 
    "average_leadtime": 6001076644.348168, 
    "average_party_size": null, 
    "transaction_revenue": 10.534949947485886 
}, 
{ 
    "_id": { 
     "year": 2010 
    }, 
    "total_revs": 50492, 
    "average_stay": 241539095.3022261, 
    "average_leadtime": 6193156175.235681, 
    "average_party_size": null, 
    "transaction_revenue": 10.506802463756634 
}, 
{ 
    "_id": { 
     "year": 2015 
    }, 
    "total_revs": 81832, 
    "average_stay": 229180877.89617753, 
    "average_leadtime": 6365565822.661061, 
    "average_party_size": null, 
    "transaction_revenue": 10.7106377700655 
} 
] 

문제 :

이 것이 바로 나에게 말하고있다 대략 무엇 거래 비용은 거래 당 ... $ 10 약간의 de 데이터의 변화.

1 년 동안 평균을 계산해야합니다. 나는 그것이 올바르게 표현하고 있다고 생각한다.

원하는 결과 : 나는 매년 평균 총 객실 거래 수익을 얻고 싶습니다.

원하는 결과를 얻으려면 어떻게해야합니까?

답변

0

내 방 ID를 첫 번째 $group 단계로 잘못 투영했습니다. 성공적으로 그룹을 구성 할 수있게되면 최종 $group이 확실한 답이되었습니다.

   { 
        "$group" : { 
         "_id" : {"room": "$room", "year": "$year"}, 
         "total_revs" : { "$sum" : 1 }, 
         "average_stay"   : { "$avg" : { "$subtract": ["$endDate", "$startDate"]}}, 
         "average_leadtime"  : { "$avg" : { "$subtract": ["$startDate", "$orderDate"]}}, 
         "transaction_revenue" : { "$sum" : "$tranFee" } 
        } 
       }, 
       { 
        "$group" : { 
         "_id" : "$_id.year", 
         "average_tr" : { "$avg" : "$transaction_revenue" } 
        } 
       } 
관련 문제