우리는 Mongodb에서 우리 컬렉션을 대부분 사용합니다.MongoDB 집계 쿼리 실행 속도가 매우 느림
db.docs.aggregate([
{"$sort":{"docId":-1,"v":-1}},
{"$group":{"_id":"$docId","doc":{"$first":"$$ROOT"}}}
{"$match":{<query>}}
]);
: 그래서
{ "docId" : 174, "v" : 1, "attr1": 165 } /*version 1 */
{ "docId" : 174, "v" : 2, "attr1": 165, "attr2": "A-1" }
{ "docId" : 174, "v" : 3, "attr1": 184, "attr2" : "A-1" }
우리는 우리의 쿼리를 수행 할 때 우리는 항상 우리의 객체의 최신 버전을 얻을 수 있도록하기 위해이 방법으로 통합 프레임 워크를 사용할 필요가, 다음과 같이 선택한 버전의 메커니즘입니다 이 접근법의 문제점은 일단 그룹화를 완료하면 컬렉션에 아무런 관련이없는 메모리 세트가 생겨 인덱스를 사용할 수 없다는 것입니다.
결과적으로 컬렉션의 문서가 많을수록 쿼리 속도가 느려집니다.
속도를 향상시킬 방법이 있습니까?
하지 않은 경우, 나는이 좋은 게시물에 정의 된 방법 중 하나로 이동 고려할는 : 하나 명의 컬렉션을 최신 버전으로 유지하고 하나 http://www.askasya.com/post/trackversions/
왜 처음 단계에서 $가 맞지 않았습니까? –
문서의 docId 입력란에 색인을 추가하십시오. –
@DanieleTassone 옵션이 아닌 것 같습니다. 설명은 내가 제공 한 링크에 있습니다. 기본적으로 필터를 처음 시작할 때 가장 최근 버전이 아닌 버전으로 끝나지 만 정렬 그룹 단계에서 해당 버전을 고려하게됩니다. 이와 같이 버전 관리를 수행하는 것은 일반적인 오류입니다. – jbernal