원래 모음 :mongodb mapreduce - 축소판에 배열 또는 객체를 만드시겠습니까?
{
"_id" : ObjectId('xxxxxxxxxxxxxxxx'),
"userId" : ObjectId('yyyyyyyyyyyyyyyy'),
"urlId" : ObjectId('zzzzzzzzzzzzzzzzzz')
},
{
"_id" : ObjectId('uuuuuuuuuuuuuuuuuu'),
"userId" : ObjectId('aaaaaaaaaaaaaaaa'),
"urlId" : ObjectId('zzzzzzzzzzzzzzzzzz')
}
는 방출 :
emit(this.urlId, {userId: this.userId, visitCount: this.visitCount});
가 감소 :
이function(key, values) {
var visitCount = 0;
var userVC = new Array();
values.forEach(function(doc) {
NOT SURE WHAT TO PUT HERE TO ACHIEVE DESIRED OUTPUT COLLECTION
});
return {urlId: key, userVC: userVC};
};
원하는 MR 출력 컬렉션 :
{
"_id" : ObjectId('zzzzzzzzzzzzzzzzzzzz'),
"value" : {
"urlId" : ObjectId('zzzzzzzzzzzzzzzzzzzz'),
"userVC" : {
ObjectId('yyyyyyyyyyyyyyyy') : <total visit count for this userId on this urlId>,
ObjectId('aaaaaaaaaaaaaaaa') : <total visit count for this userId on this urlId>
}
}
두 번째 map-reduce 연산을 사용하여 사용자 AND 키의 키를 가진 콜렉션을 사용자의 키와 카운트 배열을 갖는 값으로 변환 할 수 있습니다. –
당신이 count에 하나를 할당 했으므로'(var i = 0; i
Danielo515
그렇지 않습니다 @ Danielo515. 지도에서 카운트 1을 할당하지만, 감소는 임의의 순서로 여러 번 발생할 수 있으며, 하위 집합에서 이전에 값이 감소 된지도에서 방출 된 값을 혼합합니다. 즉, reduce 함수 내부에서 계수가 항상 하나가되는 것은 아닙니다. – Chris