에서 map/reduce
함수를 실행하려고하는데, 여기서 내 컬렉션의 개체에 포함 된 3 개의 다른 필드로 그룹화합니다. map/reduce 함수를 실행할 수는 있지만 출력 된 모든 필드는 출력 컬렉션에서 함께 실행됩니다. 정상인지 아닌지는 잘 모르겠지만 분석을 위해 데이터를 출력하면 더 많은 작업이 필요합니다. 그들을 분리하는 방법이 있습니까, 그렇다면 mongoexport
을 사용 하시겠습니까? Mongodb 맵/Reduce - 다중 그룹 By
일, 사용자 ID (또는 UID)와 대상이다가 내가 그룹에 노력하고 필드는.
나는 이러한 기능을 실행map = function() {
day = (this.created_at.getFullYear() + "-" + (this.created_at.getMonth()+1) + "-" + this.created_at.getDate());
emit({day: day, uid: this.uid, destination: this.destination}, {count:1});
}
/* Reduce Function */
reduce = function(key, values) {
var count = 0;
values.forEach(function(v) {
count += v['count'];
}
);
return {count: count};
}
/* Output Function */
db.events.mapReduce(map, reduce, {query: {destination: {$ne:null}}, out: "TMP"});
출력은 다음과 같습니다 열로
{ "_id" : { "day" : "2012-4-9", "uid" : "1234456", "destination" : "Home" }, "value" : { "count" : 1 } }
{ "_id" : { "day" : "2012-4-9", "uid" : "2345678", "destination" : "Home" }, "value" : { "count" : 1 } }
{ "_id" : { "day" : "2012-4-9", "uid" : "3456789", "destination" : "Login" }, "value" : { "count" : 1 } }
{ "_id" : { "day" : "2012-4-9", "uid" : "4567890", "destination" : "Contact" }, "value" : { "count" : 1 } }
{ "_id" : { "day" : "2012-4-9", "uid" : "5678901", "destination" : "Help" }, "value" : { "count" : 1 } }
내가 mongoexport
을 사용하려고, 난 못해 별도의 일, UID, 또는 대상 수있는 때문에 map은 필드를 결합합니다. I는 다음과 같이 것하고 싶은 무엇
:
{ { "day" : "2012-4-9" }, { "uid" : "1234456" }, { "destination" : "Home"}, { "count" : 1 } }
이도 가능합니까?
마찬가지로 - 파일에 sed
을 적용하고 CSV를 정리하여 출력 작업을 할 수있었습니다. 더 많은 일을했지만 효과가있었습니다. 올바른 형식으로 mongodb
을 얻을 수 있다면 이상적입니다.
mongoexport는 매우 간단한 도구입니다 아직 임베디드 분야를 지원하지 않습니다. – Ren