Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

지도 기능 문제 해결

이 페이지의 내용

  • 키 및 값 쌍 확인

참고

맵 리듀스의 대안으로서의 집계 파이프라인

MongoDB 5.0 부터 맵 리듀스 는 더 이상 사용되지 않습니다.

맵 리듀스 대안으로서의 집계 파이프라인 예시는 다음을 참조하세요.

또한 집계 파이프라인 은 맵 리듀스 작업보다 문제를 해결하기 쉽습니다.

map 함수는 값을 키와 연결하거나 '매핑'하고 맵 리듀스 작업 중에 키 및 값 쌍을 내보내는 JavaScript 함수입니다.

map 함수에서 발생하는 keyvalue 쌍을 확인하려면 emit 함수를 직접 작성하세요.

다음 프로토타입의 문서가 포함된 collection orders 을 가정해 보겠습니다.

{
_id: ObjectId("50a8240b927d5d8b5891743c"),
cust_id: "abc123",
ord_date: new Date("Oct 04, 2012"),
status: 'A',
price: 250,
items: [ { sku: "mmm", qty: 5, price: 2.5 },
{ sku: "nnn", qty: 5, price: 2.5 } ]
}
  1. 각 문서에 대해 pricecust_id 에 매핑하고 cust_idprice 쌍을 방출하는 map 함수를 정의합니다.

    var map = function() {
    emit(this.cust_id, this.price);
    };
  2. 키와 값을 출력하는 emit 함수를 정의합니다:

    var emit = function(key, value) {
    print("emit");
    print("key: " + key + " value: " + tojson(value));
    }
  3. orders collection의 단일 문서를 사용하여 map 함수를 호출합니다.

    var myDoc = db.orders.findOne( { _id: ObjectId("50a8240b927d5d8b5891743c") } );
    map.apply(myDoc);
  4. 키와 값 쌍이 예상한 대로인지 확인합니다.

    emit
    key: abc123 value:250
  5. orders collection의 여러 문서를 사용하여 map 함수를 호출합니다.

    var myCursor = db.orders.find( { cust_id: "abc123" } );
    while (myCursor.hasNext()) {
    var doc = myCursor.next();
    print ("document _id= " + tojson(doc._id));
    map.apply(doc);
    print();
    }
  6. 키와 값 쌍이 예상한 대로인지 확인합니다.

다음도 참조하세요.

map 함수는 다양한 요구 사항을 충족해야 합니다. map 함수에 대한 모든 요구 사항 목록은 mapReduce 또는 mongosh 헬퍼 메서드 db.collection.mapReduce() 를 참조하세요.

돌아가기

증분으로 수행

이 페이지의 내용