내가 본 모든 MongoDB MapReduce 예제는 숫자 계산/추가를 처리했습니다. 문자열을 결합해야하는데 MapReduce가 작업을위한 최상의 도구 인 것처럼 보입니다. 이 형식의 큰 MongoDB 컬렉션이 있습니다 :Mongodb MapReduce를 사용하여 문자열을 연결 하시겠습니까?
{name: userone, type: typeone}
{name: usertwo, type: typetwo}
{name: userthree, type: typeone}
각 이름은 하나의 유형 만 있지만 이름은 반드시 고유하지는 않습니다. 나는 이러한 목표를 달성하기 위해 맵리 듀스를 사용하려고했다
{type: typeone, names: userone, usertwo}
{type: typetwo, names: userthree}
: 나는 쉼표 목록 또는 같은 배열을 분리 중 하나로, 특정 유형의 모든 이름을 나열하는 컬렉션 끝내고 싶다. 유형에 대해 한 명의 사용자 만있을 때 내 기능이 올바르게 작동합니다. 그러나 둘 이상의 사용자가있을 때 '정의되지 않음'이 이름 필드에 저장됩니다.
Javascript가 좋지 않아 MongoDB를 배우기 때문에 간단한 데이터 형식이나 범위 오류 일 수 있습니다.
여기 내 맵과 기능이 있습니다. 그들에게 무슨 문제가 있습니까?
map = function() {
emit(this.user,{type:this.type});
}
reduce = function(key, values) {
var all="";
for(var i in values) {
all+=values[i]['type']+",";
}
return all;
}
멋지다 ... 이제 코드를 수정하여 쉼표로 구분 된 목록 대신 배열에 이름을 포함 시키면 어떻게됩니까? 필요하면 클라이언트에서 쉼표로 구분 된 목록을 작성할 수 있습니까? 반품 만하면됩니다. { "names": all}; 지도 함수에서 작동하지만 내게 [0] => 배열 ( [0] => 배열 ( [0] => 배열 ( [0] => 배열 ( [0] => 배열 ( [0] => 배열 ( –
) 아, 네 의도가 무엇인지 확신 할 수 없으므로 코드를 기반으로 추측 했으므로 배열 예제를 포함하도록 대답을 수정하겠습니다. –