나는 약 100,000 개의 문서 (sharded되지 않음)가있는 mongodb에 상당히 많은 모음을 가지고 있습니다. 이것은 기본적으로 사용자가이 컬렉션의 동일한 정보를 볼 수있는 다양한 방법을 탐색 할 수있게하는 웹 응용 프로그램의 백엔드입니다.Mongodb 집계 결과 캐싱
보기 중 하나에 대해 나는 집계 프레임 워크를 사용하여 필드의 발생 횟수를 계산하려고합니다. 이것은 전체 컬렉션을 모으는 것을 의미합니다. 문제는이 집계 작업 (그룹, 정렬 및 제한의 간단한 파이프 라인)은 웹 응용 프로그램에 비해 너무 느린 2 초가 걸린다는 것입니다.
제 질문은; 이 집계 연산의 결과를 캐시하기 위해 선호되는 솔루션은 무엇입니까? 내가 아는 한, 새로운 콜렉션 또는 그와 유사한 것을 "집계"하는 것은 불가능합니다. 현재 내가 찾은 유일한 해결책은 전체 결과를 변수로 읽은 다음 삽입을 사용하여이 변수를 새 컬렉션에 삽입하는 것입니다. 그러나 데이터베이스에서 많은 양의 데이터를 보내는 것이 두려워요>>> 다시 데이터베이스로?
제안 사항? 파이프 라인의
예 :
res = items.aggregate([
{ "$group": { "_id": { "item_id": "$item_id", "title": "$title", "category": "$category" }, "count": { "$sum": 1 } } },
{ "$sort": { "count": -1 } },
{ "$limit": 5 }
])
스키마는 기본적으로 그 3 개 필드 + 정말, 관련이없는 그 이상을 몇 가지 예 : 나는 모든 둘 ITEM_ID과에 인덱스를 시도
doc = {
"item_id": 1000,
"title": "this is the item title",
"category": "this is the item category"
}
3 개의 필드는 성공하지 못합니다.
아마도 문서의 예제 구조와 집계 파이프 라인의 단계를 제공 할 수 있다면 유용 할 것입니다. 색인을 사용합니까? – attish