내가 모든 판매를 포함하고 국가에 의해,이MongoDB의 복잡한지도/감소 - 또는 그래서 나는 마지막에,
{_id: '999', buyer:{city:'Dallas','state':'Texas',...}, products: {...}, order_value:1000, date:"2011-11-23T11:34:33Z" }
내가 주문 볼륨에 대한 통계를 보여줄 필요가
처럼 보이는 MongoDB를 수집 있다고 생각 30, 60 및 90 일. 그래서, 당신은 하나의 쿼리에서이 작업을 수행 할 방법이
State Last 30 Last 60 Last 90 Arizona 12000 22000 35000 Texas 5000 9000 16000
뭔가를 얻으려면?
map = function() {
emit({key : this.buyer.state, value : order_value})
}
reduce = function(key,values) {
sum = 0;
values.forEach(function(o) {
sum += o
}
return sum
}
한 다음 쿼리 {날짜 컬렉션을 줄일지도 : {$에있다 : {[오늘 마이너스 삼십일]}} (I 디부 ONT 구문을 기억 매우 어렵지 않다
좋아하지만, 한 쿼리에서 30, 60, 90, 모두를 얻는 방법? –
@CatalinM 더 복잡하지만 불가능하지는 않습니다. 더 복잡한 reduce 함수를 만들어야합니다 (그리고 날짜 값을 포함하여 더 복잡한 키를지도에서 사용해야합니다). 그러나 나는 3지도 감축을 실행하는 것이 좋습니다. 하나의 쿼리를 실행할 어떤 이유가 있습니까? – kamaradclimber
성능이 오케이 쿼리를 원한다면 @CatalinM : 하나의 쿼리에서 수행 할 수있는 유일한 해결책은 매우 javascript 스타일이며 매우 느립니다 (적어도 3 개 맵을 줄이는 것보다 훨씬 많은 작업). 또한 점진적인지도 축소를 할 수 있다고 생각하고 업데이트 된 답변을 참조하십시오. – kamaradclimber