큰 컬렉션을 더 작은 조각으로 집계하고 타임 스탬프별로 그룹화하는 데 사용하는 python 스크립트 마녀에 문제가 있습니다. 당신이 볼 수 있듯이MongoDB MapReduce, 날짜 및 % 연산자
map = Code("function(number) {"
"emit({"
"ts : new Date(new Date((this.ts - (this.ts % (60 * number))) * 1000).setSeconds(0))"
"}, 1);"
"}")
reduce = Code("function(key, vals) {"
"var sum = 0;"
"for (var i in vals) {"
"sum += vals[i]"
"}"
"return sum;"
"}")
, 그것은 매우 간단 맵리 듀스와 타임 스탬프 (TS) 분의 애니 지정된 수에 의해 그룹화해야합니다. 나는 여기에 http://jsfiddle.net/QgMzK/1/ 자바를 테스트했습니다 그리고 그것은 잘 작동하는 것 같습니다. 하지만 파이썬에서 실행하면 모든 타임 스탬프가 ISODate ("1970-01-01T00 : 00 : 00Z")가됩니다.
아이디어가 있으십니까? number
, 호출 할 때, null로 설정되고 날짜를 만들 것입니다 coertion (그리고 0으로 일부 %
) 후지도 ISODate("0NaN-NaN-NaNTNaN:NaN:NaNZ")
을 반환지도-감소 :
map 함수의 number 매개 변수는 가장 가까운 5, 10 또는 X 분으로 모음을 그룹화 할 수 있도록되어 있습니다. ts-prop를 ex, ts :로 변경하면 매개 변수가 제대로 작동합니다. 호의적 인 @ Jarsäter 인 –
@ Jarsäter는 map-reduce 결과의 유일한 키로 'None'을 반환합니다. 전체적으로 일치합니다. 내 대답과 함께. – soulcheck