English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
MongoDB 문서에 따르면, Map reduce는 대량의 데이터를 유용한 합성 결과로 압축하는 데이터 처리 패러다임입니다. MongoDB는 mapReduce 명령어를 사용하여 map reduce 작업을 수행합니다. MapReduce는 일반적으로 대형 데이터셋을 처리하는 데 사용됩니다.
다음은 기본 mapReduce 명령어 문법입니다-
>db.collection.mapReduce( function() { emit(key,value); }, //map 함수 function(key,values) { return reduceFunction }, //reduce 함수 out: collection, query: document, sort: document, limit: number } )
map-reduce 함수는 먼저 집합을 쿼리한 후 결과 문서를 맵핑하여 키를 발행합니다-값 쌍을 생성한 후, 여러 값을 가진 키에 따라 줄입니다.
위의 문법에서-
map
은 키를 값으로 맵핑하고 키를 발행하는 JavaScript 함수입니다-값 쌍
reduce
은 모든 같은 키를 가진 문서를 줄이거나 그룹화하는 JavaScript 함수입니다
out
map을 지정합니다-reduce 쿼리 결과 위치를 지정합니다
query
문서를 선택하기 위한 선택 가능한 선택 기준을 지정합니다
sort
선택 가능한 정렬 조건을 지정합니다
limit
반환할 수 있는 선택 가능한 최대 문서 수를 지정합니다
다음과 같은 사용자 포스트를 저장하는 문서 구조를 고려해보세요. 이 문서는 사용자의 user_name와 발행 상태를 저장합니다.
{ "post_text":3codebox는 튜토리얼에 대한 멋진 웹사이트입니다 "user_name": "status":"active" }
이제, 다음에posts
집합에서 mapReduce 함수를 사용하여 모든 활성 포스트를 선택하고, user_name에 따라 그룹화한 후 다음 코드로 각 사용자의 포스트 수를 세어줍니다-
>db.posts.mapReduce( function() { emit(this.user_id,1); }, function(key, values) {return Array.sum(values)}, { query:{status:"active"}, out:"post_total" } )
위의 mapReduce 쿼리는 다음 결과를 출력합니다-
{ "result": "timeMillis": 9, "counts": "input": 4, "emit": 4, "reduce": 2, "output": 2 ,} "ok": 1,}
결과를 보여주면, 총4문서가 쿼리와 일치합니다(status:"active"), map 함수가4키 값 쌍을 가진 문서가, 마지막에 reduce 함수가 같은 키를 가진 매핑 문서를 분류합니다.2개.
이 mapReduce 쿼리의 결과를 확인하려면 find 연산자를 사용하십시오-
>db.posts.mapReduce( function() { emit(this.user_id,1); }, function(key, values) {return Array.sum(values)}, { query:{status:"active"}, out:"post_total" } ).find()
위의 쿼리는 다음과 같은 결과를 반환하며, 사용자 tom과 mark이 모두 활성 상태의 두 개의 post를 가지고 있다는 것을 보여줍니다–
{ "_id" : "tom", "value" : 2 } { "_id" : "mark", "value" : 2 }
이와 같은 방식으로, MapReduce 쿼리는 대형 복잡한 집합 쿼리를 구성하는 데 사용될 수 있습니다. custom Javascript 함수의 사용은 MapReduce를 통해 매우 유연하며 강력합니다.