Docs Menu
Docs Home
/ / /
PHP 라이브러리 매뉴얼
/ /

MongoDB\Collection::mapReduce()

이 페이지의 내용

  • 정의
  • 매개변수
  • Return Values
  • 오류/예외
  • 행동
  • 예시
  • 다음도 참조하세요.

버전 1.12부터 더 이상 사용되지 않습니다.

버전 1.2에 새로 추가됨.

MongoDB\Collection::mapReduce()

mapReduce 명령을 사용하면 컬렉션에 대해 맵 리듀스 애그리게이션 작업을 실행할 수 있습니다.

function mapReduce(
MongoDB\BSON\JavascriptInterface $map,
MongoDB\BSON\JavascriptInterface $reduce,
string|array|object $out,
array $options = []
): MongoDB\MapReduceResult
$map : MongoDB\BSON\Javascript

값을 키와 연결하거나 '매핑'하고 키 및 값 쌍을 내보내는 JavaScript 함수입니다.

참고

범위가 있는 JavaScript 인스턴스를 전달하는 것은 더 이상 사용되지 않습니다. 맵리듀스 작업의 scope 옵션에 모든 범위 변수를 넣습니다.

$reduce : MongoDB\BSON\Javascript

특정 키와 연결된 모든 값을 단일 객체로 '줄이는' JavaScript 함수입니다.

참고

범위가 있는 JavaScript 인스턴스를 전달하는 것은 더 이상 사용되지 않습니다. 맵리듀스 작업의 scope 옵션에 모든 범위 변수를 넣습니다.

$out : 문자열|배열|객체
맵 리듀스 작업의 결과를 출력할 위치를 지정합니다. collection으로 출력하거나 결과를 인라인으로 반환할 수 있습니다. 복제본 세트의 프라이머리 멤버에서는 collection이나 인라인으로 출력할 수 있지만 세컨더리에서는 인라인 출력만 가능합니다.
$options : 배열

원하는 옵션을 지정하는 배열입니다.

이름
유형
설명

bypassDocumentValidation

부울

true인 경우 쓰기 작업이 문서 수준 유효성 검사를 우회하도록 허용합니다. 기본값은 false입니다.

이는 결과가 컬렉션으로 출력되는 경우에만 적용됩니다.

데이터 정렬

배열|객체

데이터 정렬 을 통해 사용자는 string 비교를 위한 언어별 규칙(예: 대소문자 및 악센트 표시 규칙)을 지정할 수 있습니다. 데이터 정렬을 지정할 때 locale 필드는 필수입니다. 다른 모든 데이터 정렬 필드는 선택 사항입니다. 필드에 대한 설명은 데이터 정렬 문서를 참조하세요.

데이터 정렬이 지정되지 않았지만 컬렉션에 기본 데이터 정렬이 있는 경우, 작업은 컬렉션에 지정된 데이터 정렬을 사용합니다. 컬렉션 또는 연산에 대한 데이터 정렬이 지정되지 않은 경우, MongoDB는 이전 버전에서 문자열 비교에 사용된 간단한 이진 비교를 사용합니다.

comment

혼합

사용자가 데이터베이스 프로파일러, currentOp 출력 및 로그를 통해 작업을 추적하는 데 도움이 되는 임의의 주석을 지정할 수 있습니다.

이 옵션은 MongoDB 4.4부터 사용할 수 있으며 이전 서버 버전에 대해 지정된 경우 실행 시 예외가 발생합니다.

버전 1.13에 새로 추가되었습니다.

마무리

reduce 메서드를 따르고 출력을 수정합니다.

범위가 있는 JavaScript 인스턴스를 전달하는 것은 더 이상 사용되지 않습니다. 맵리듀스 작업의 scope 옵션에 모든 범위 변수를 넣습니다.

jsMode

부울

맵과 리듀스 함수 실행 사이에 중간 데이터를 BSON 형식으로 변환할지 여부를 지정합니다.

limit

integer

맵 함수에 입력할 수 있는 최대 문서 수를 지정합니다.

최대 시간 (MS)

integer

커서에서 작업을 처리하는 데 걸리는 누적 시간 제한(밀리초)입니다. MongoDB는 중단 지점 이후 가장 빠른 시점에 작업을 중단합니다.

쿼리

배열|객체

맵 함수에 입력된 문서를 결정하기 위해 쿼리 연산자를 사용하여 선택 기준을 지정합니다.

readConcern

작업에 사용할 읽기 고려 입니다. 기본값은 컬렉션의 읽기 고려입니다.

트랜잭션의 일부로 개별 작업에 대한 읽기 고려를 지정할 수 없습니다. 대신 트랜잭션을시작할 때 readConcern 옵션을 설정합니다.

읽기 설정

작업에 사용할 읽기 설정 입니다. 기본값은 컬렉션의 읽기 설정입니다.

결과가 collection에 출력될 때 이 옵션은 무시됩니다.

범위

배열|객체

맵, 리듀스 및 파이널라이즈 함수에서 액세스할 수 있는 글로벌 변수를 지정합니다.

Session

작업과 연결할 클라이언트 세션입니다.

버전 1.3에 새로 추가되었습니다.

sort

배열|객체

결과의 순서를 지정하는 정렬 사양입니다.

typeMap

배열

커서에 적용할 타입 맵으로, BSON 문서가 PHP 값으로 변환되는 방식을 결정합니다. 기본값은 컬렉션의 타입 맵입니다.

verbose

부울

결과 정보에 타이밍 정보를 포함할지 여부를 지정합니다.

쓰기 고려

작업에 사용할 고려를 씁니다 . 기본값은 컬렉션의 쓰기 고려입니다.

트랜잭션의 일부로 개별 작업에 대한 쓰기 고려를 지정할 수 없습니다. 대신 트랜잭션을시작할 때 writeConcern 옵션을 설정합니다.

출력 메서드에 관계없이 맵 리듀스 결과를 반복할 수 있는 MongoDB\MapReduceResult 객체 (예: 인라인, 컬렉션)을 통해 IteratorAggregate 인터페이스. 또한 명령 통계에 대한 액세스 도 제공합니다.

옵션이 사용되지만 선택한 서버에서 지원되지 않는 경우 MongoDB\Exception\UnsupportedException입니다(예: collation, readConcern, writeConcern).

MongoDB\Exception\InvalidArgumentException 매개변수 또는 옵션의 구문 분석과 관련된 오류의 경우입니다.

MongoDB\Exception\UnexpectedValueException 서버의 명령 응답이 잘못된 경우입니다.

MongoDB\ 드라이버\Exception\RuntimeException 확장 수준의 다른 오류(예: 연결 오류).

MongoDB 에서 맵 리듀스 듀스 작업은 결과를 컬렉션 에 쓰기 (write) 결과를 인라인으로 반환할 수 있습니다. 맵 리듀스 출력을 컬렉션 에 쓰기 (write) 경우 동일한 입력 컬렉션 에서 새 결과를 이전 결과와 대체, 병합 또는 축소하는 후속 맵 리듀스 작업을 수행할 수 있습니다. 자세한 내용과 예제는 맵 리듀스증분 맵 리듀스 수행 을 참조하세요.

맵 리듀스 듀스 작업의 결과를 인라인 으로 반환할 때 결과 문서는 BSON 문서 크기 제한(현재 16 메가바이트) 내에 있어야 합니다.

MongoDB는 샤드 컬렉션 에서 맵 리듀스 작업을 지원합니다. 맵 리듀스 작업은 결과를 샤드 컬렉션으로 출력할 수도 있습니다. 맵 리듀스 및 샤드 컬렉션을 참조하세요.

이 예제에서는 도시 인구를 사용하여 각 주의 전체 인구를 계산합니다.

<?php
$collection = (new MongoDB\Client)->test->zips;
$map = new MongoDB\BSON\Javascript('function() { emit(this.state, this.pop); }');
$reduce = new MongoDB\BSON\Javascript('function(key, values) { return Array.sum(values) }');
$out = ['inline' => 1];
$populations = $collection->mapReduce($map, $reduce, $out);
foreach ($populations as $pop) {
var_dump($pop);
};

이 경우 출력은 다음과 유사합니다:

object(stdClass)#2293 (2) {
["_id"]=>
string(2) "AK"
["value"]=>
float(544698)
}
object(stdClass)#2300 (2) {
["_id"]=>
string(2) "AL"
["value"]=>
float(4040587)
}
object(stdClass)#2293 (2) {
["_id"]=>
string(2) "AR"
["value"]=>
float(2350725)
}
object(stdClass)#2300 (2) {
["_id"]=>
string(2) "AZ"
["value"]=>
float(3665228)
}
  • MongoDB 매뉴얼의 mapReduce 명령 참조

  • MongoDB 매뉴얼의 맵 리듀스 문서

돌아가기

listSearchIndexes()