2013-04-24 7 views
0

로 그룹화 나는 다음과 같은 스키마 컬렉션을 가지고있다 그룹당 평균 금액이 customerId 인 집계를 사용합니다.몽구스 nodejs 배열

출력량 "amount"필드가 "amount"의 평균값이 아니라 "otherPayers"필드의 "amount"필드이기도합니다.

나는 mapreduce를 살펴 봤지만 작동시키지 못합니다.

아이디어가 있으십니까? SQL에서는 하위 쿼리를 사용하면 매우 간단합니다.

+0

당신이 예를 출력 문서를 줄 수 - 내가 당신을 아주 계산하려고하는 것을 알 수 있습니다 모르겠지만, 나는 그것이 맵리 듀스와 해 드리겠습니다 확신하고 나는 그것도 집계 프레임 워크와 함께 할 수있을 것 같은데요. –

답변

0

otherPayers 배열 안의 모든 금액과 문서의 최상위 레벨에있는 금액 필드를 합산하여 평균 한 것으로 추측합니다. 다음은 통합 프레임 워크를 어떻게 할 것입니다 :

unwind = { $unwind : "$otherPayers" }; 
group = { $ group : { _id : "$CustomerId", 
         amt : { $first : "$amount" }, 
         count : { $sum : 1 }, 
         total : { $sum : "$otherPayers.amount" } 
     } }; 
project = { $project : { _id : 0, 
         CustomerId : "$_id", 
         avgPaid : { $divide : [ 
             { $add : [ "$total", "$amt" ] }, 
             { $add : [ "$count", 1 ] } 
         ] } 
} }; 

db.collection.aggregate(unwind, group, project);