옵션은 다음과 같습니다:
{ inline : 1 } – 결과가 16MB 미만인 경우에만 컬렉션이 생성되지 않고 결과가 메모리에 저장됩니다.
컬렉션 이름을 옵션으로 사용하는 경우 다른 옵션과 함께 사용할 수 없습니다.
병합 옵션이 가장 가능성이 높지만 실험 결과 축소 또는 마무리에서 개체의 필드만 업데이트하는 대신 항상 "_id"를 기반으로 전체 문서를 업데이트하는 것으로 나타났습니다.
예를 들어, 10개가 넘는 필드가 있고 emps 필드가 없는 기존 세트 A가 있는데 MR 작업을 실행하면 감소 결과는 {key,emps:[["0132",70],["1443"입니다. ,30]]}, 기존 세트 A에 emps 필드를 추가하고 싶은데 결과적으로 10개가 넘는 필드가 사라지고 emps 필드만 남게 되었습니다.
원래는 축소에서 db 개체를 참조하고 수동으로 업데이트하려고 했지만 현재 버전에서는 db 개체 참조를 허용하지 않습니다.
이제 mapreduce 및 업데이트 후에만 forEach를 수동으로 실행할 수 있습니다.
mapreduce에 해당하는 솔루션이 있나요?
reduce
을 사용하면 제공된 축소 함수(reducer)를 사용하여 결과 세트에서 기존 결과와 새로 계산된 결과를 계산합니다. 최종 결과가 저장됩니다. 여기서 가장 중요한 것은 매퍼가 출력하는 중간 결과를 최종 결과와 동일한 형식으로 만드는 것입니다. 이러한 감속기는 두 위치에서 사용됩니다. 한 번은 축소에서, 한 번은 출력에서 동일한 형식, 특히 계층 구조를 사용하면 작성하기가 훨씬 쉽습니다. 리듀서는 여러 결과를 병합하는 역할만 담당하는 것으로 이해하면 됩니다. 매퍼가 중간 결과만 출력한다면 리듀서를 거치지 않고 바로 최종 결과로 사용해야 합니다. 실제로 MongoDB에서는 키가 하나의 매퍼 출력에만 해당하는 경우 실제로는 리듀서를 거치지 않고 직접 출력됩니다.http://docs.mongodb.org/manual/reference/method/db.collection.mapReduce/#output-to-a-collection-with-an-action