Mongodb mapreduce 함수는 find 함수와 같이 데이터베이스에서 레코드를 건너 뛸 수있는 방법을 제공하지 않습니다. 쿼리의 기능을 가지고 있으며, & 제한 옵션을 정렬하십시오. 하지만 데이터베이스에서 일부 레코드를 건너 뛰고 싶습니다. 그리고 그 레코드를 얻는 방법이 없습니다. 해결책을 제시하십시오.mongodb mapreduce 함수는 스킵 기능을 제공하지 않습니다. 이것에 대한 해결책은 무엇입니까?
미리 감사드립니다.
Mongodb mapreduce 함수는 find 함수와 같이 데이터베이스에서 레코드를 건너 뛸 수있는 방법을 제공하지 않습니다. 쿼리의 기능을 가지고 있으며, & 제한 옵션을 정렬하십시오. 하지만 데이터베이스에서 일부 레코드를 건너 뛰고 싶습니다. 그리고 그 레코드를 얻는 방법이 없습니다. 해결책을 제시하십시오.mongodb mapreduce 함수는 스킵 기능을 제공하지 않습니다. 이것에 대한 해결책은 무엇입니까?
미리 감사드립니다.
잘 구조화 된 map-reduce 쿼리를 사용하면 컬렉션의 특정 문서를 건너 뛸 수 있습니다.
세르지오 (Sergio)가 지적했듯이 map()에서는 특정 문서를 단순히 출력 할 수 없습니다. 범위를 사용하여 전역 카운터 변수를 정의하는 것은 emit을 지정된 범위의 문서로 제한하는 한 가지 방법입니다.
db.collection_name.mapReduce(map, reduce, {out: example_output, sort: {id:-1}, scope: "var counter=0")};
지도 기능 : 예를 들어, (삽입 시간으로 분류하여과) OBJECTID으로 분류되어 처음 20 개 문서 건너 뛸
function(){
counter ++;
if (counter > 20){
emit(key, value);
}
}
잘 모르겠어요을하는 버전 이후 이 기능을 사용할 수 있지만 확실히 MongoDB를 2.6에서 mapReduce()
function provides query
parameter :
query
: 문서선택 사항. 쿼리 연산자를 사용하여 선택 기준을 지정하여 맵에 입력 된 문서를 결정합니다.
예
고려하여 다음과 같은 프로토 타입의 문서가 포함 된 컬렉션을 주문에 대한 작업을지도-감소 다음
{
_id: ObjectId("50a8240b927d5d8b5891743c"),
cust_id: "abc123",
ord_date: new Date("Oct 04, 2012"),
status: 'A',
price: 25,
items: [ { sku: "mmm", qty: 5, price: 2.5 },
{ sku: "nnn", qty: 5, price: 2.5 } ]
}
을 사용하여 주문 컬렉션지도-감소 작업을 수행을 mapFunction2, reduceFunction2 및 finalizeFunction2 함수
db.orders.mapReduce(mapFunction2,
reduceFunction2,
{
out: { merge: "map_reduce_example" },
query: { ord_date:
{ $gt: new Date('01/01/2012') }
},
finalize: finalizeFunction2
}
)
이 작업은 new Date(01/01/2012)
보다 큰 ord_date
만 해당 문서를 선택 쿼리 필드를 사용합니다. 그런 다음 결과를 콜렉션 map_reduce_example
에 출력합니다. map_reduce_example
컬렉션이 이미 존재하면 작업은 기존 내용을이 map-reduce 작업의 결과와 병합합니다.
감사합니다. 이것이 내가 원하는 것입니다. –