bestsource

Mongodb 집약 프레임워크 설명

bestsource 2023. 2. 17. 21:29
반응형

Mongodb 집약 프레임워크 설명

MongoDB의 Aggregation 프레임워크에 대한 설명 기능이 있습니까?서류상으로는 보이지 않습니다.

확인할 수 있는 다른 방법이 없는 경우 집약 프레임워크 내에서 쿼리가 어떻게 수행되는지 확인합니다.

당신을 찾아서 하는 걸 알아요

db.collection.find().explain()

그러나 집약 프레임워크에서 오류가 발생함

db.collection.aggregate(
    { $project : { "Tags._id" : 1 }},
    { $unwind : "$Tags" },
    { $match: {$or: [{"Tags._id":"tag1"},{"Tags._id":"tag2"}]}},
    { 
        $group: 
        { 
            _id : { id: "$_id"},
            "count": { $sum:1 } 
        }
    },
    { $sort: {"count":-1}}
).explain()

MongoDB 버전 3.0부터는 단순히 순서를 변경할 수 있습니다.

collection.aggregate(...).explain()

로.

collection.explain().aggregate(...)

원하는 결과를 얻을 수 있습니다(여기 참조).

이전 버전 > = 2.6의 경우 집계 파이프라인 작업에 옵션을 사용해야 합니다.

explain:true

db.collection.aggregate([
    { $project : { "Tags._id" : 1 }},
    { $unwind : "$Tags" },
    { $match: {$or: [{"Tags._id":"tag1"},{"Tags._id":"tag2"}]}},
    { $group: { 
        _id : "$_id",
        count: { $sum:1 } 
    }},
    {$sort: {"count":-1}}
  ],
  {
    explain:true
  }
)

해야 할 Aggregation Framework 사용)를할 수 입니다.$match,$sort,$geonear에서) 및그의 「파이프라인의 선두에서」를 해 주세요.$lookup ★★★★★★★★★★★★★★★★★」$graphLookup 를 들어, 처리 단계 )$project,$unwind , , , , 입니다.$group)의 추가 내(가 임시 을 사용하는 경우 파일을 됩니다)입니다allowDiskUse

파이프라인 최적화

일반적으로 다음과 같이 집약 파이프라인을 최적화할 수 있습니다.

  • 을 「」와 기동합니다.$match관련 문서에 대한 처리를 제한하는 단계입니다.
  • 번째 " " " 확인$match$sort스테이지는 효율적인 인덱스에 의해 지원됩니다.
  • 를 사용한 필터링$match,$limit , , , , 입니다.$skip.
  • 불필요한 단계와 문서 조작을 최소화합니다(복잡한 집약체조가 필요한 경우 스키마를 재검토할 수도 있습니다).
  • MongoDB 서버를 업그레이드한 경우 새로운 집약 연산자를 활용합니다.예를 들어, MongoDB 3.4에서는 어레이, 문자열 및 패싯의 작업 지원을 포함하여 많은 새로운 집약 단계와 표현식이 추가되었습니다.

또한 MongoDB 서버 버전에 따라 자동으로 실행되는 다수의 Aggregation Pipeline Optimizations도 있습니다.예를 들어 출력 결과에 영향을 주지 않고 실행을 개선하기 위해 인접한 스테이지를 병합하거나 순서를 변경할 수 있다.

제한 사항

Framework MongoDB 3.4의 explain하지만, ""와 내용은 하지 않습니다.executionStatsfind() 쿼리 실행을 최적화하는 데 을 두고 하는 것이 .find().explain()또는 장황하게 질문합니다.

어그리게이션 파이프라인을 최적화/프로파일 하는 데 도움이 되는 보다 상세한 실행 통계와 관련하여 MongoDB 문제 트래커에서 감시/업베이트해야 할 몇 가지 관련 기능 요청이 있습니다.

버전 2.6.x mongodb부터 사용자는 집약 프레임워크로 설명을 할 수 있습니다.

설명만 추가하면 됩니다: true

db.records.aggregate(
  [ ...your pipeline...],
  { explain: true }
)

에 2 수 , Rafa를 통해서만 할 수 .runCommand()집계를 하다

집약 프레임워크

툴의 입니다.MongoDB하나 이상의 컬렉션에 있는 문서에 대해 다양한 유형의 보고서 또는 분석을 실행할 수 있습니다.파이프라인에 대한 아이디어를 기반으로 합니다..MongoDB문서를 수집하여 하나 이상의 단계를 거쳐 전달합니다. 각 단계는 입력에 대해 서로 다른 작업을 수행합니다.각 스테이지가 출력으로 생성되기 전의 스테이지에 관계없이 입력으로 받아들인다.모든 단계에서 입력과 출력은 문서의 흐름입니다.각 단계에는 특정 작업이 있습니다.특정 형식의 문서를 예상하고 특정 출력(문서 스트림)을 생성합니다.파이프라인이 끝나면 출력물에 접근할 수 있습니다.

집약 프레임워크 단계

개별 단계는 데이터 처리 장치이다.각 단계는 문서 스트림을 한 번에 하나씩 입력해 각 문서를 한 번에 처리해 문서 출력 스트림을 생성한다.다시 한 번, 한 번에 하나씩.각 스테이지에는 일련의 노브 또는 조정 가능이 준비되어 있어 원하는 작업을 수행할 수 있도록 스테이지를 파라미터화할 수 있습니다.따라서 스테이지에서는 범용 태스크, 즉 범용 태스크가 수행되며 작업 중인 특정 문서 세트에 대한 단계를 매개 변수화합니다.그리고 그 단계에서 그 문서들을 어떻게 다루었으면 하는지도 정확히 알 수 있습니다.이러한 조정 가능은 일반적으로 필드를 수정하거나, 산술 연산을 수행하거나, 문서를 재구성하거나, 축적 작업을 수행하거나, 다른 작업을 검증할 수 있는 연산자의 형태를 취합니다.대부분의 경우 동일한 유형의 스테이지를 단일 파이프라인 내에 여러 번 포함시켜야 합니다.

단일 파이프라인 내에서 여러 번 동일한 유형의 스테이지를 사용할 수 있습니다.

예를 들어, 전체 컬렉션을 파이프라인에 전달할 필요가 없도록 초기 필터를 수행할 수 있습니다.그러나 나중에 몇 가지 추가 처리 후 다른 기준 집합을 사용하여 다시 필터링하려고 합니다.요약하자면, 파이프라인은 VIP와MongoDB위한 를 생성합니다.각 단계는 입력에 대해 서로 다른 데이터 처리 작업을 수행하고 다음 단계로 전달될 출력으로 문서를 생성하는 단계로 구성됩니다.그리고 마지막으로 파이프라인 출력이 생성되어 애플리케이션 내에서 무언가를 수행할 수 있습니다.대부분의 경우 동일한 유형의 스테이지를 개별 파이프라인 내에 여러 번 포함해야 합니다.

언급URL : https://stackoverflow.com/questions/12702080/mongodb-explain-for-aggregation-framework

반응형