나는 매우 큰 컬렉션 (800k 이상)을 가지고 있으며 태그를 기반으로하는 자동 완성 (단어 시작 부분에만 기반) 기능에 대한 쿼리를 구현해야합니다. 내 문서는 다음과 같다 : 예를 들어 내 쿼리는 "AB"로 시작하고 그 결과가 "ABC이 tag1"될 것이다 "어떤 값"인 "somefield"가 모든 태그 것mongodb 빠른 태그 쿼리
{
"_id": "theid",
"somefield": "some value",
"tags": [
{
"name": "abc tag1",
"vote": 5
},
{
"name": "hij tag2",
"vote": 22
},
{
"name": "abc tag3",
"vote": 5
},
{
"name": "hij tag4",
"vote": 77
}
]
}
경우, "abc tag3"(이름 만). 쿼리의 속도는 삽입 및 업데이트 속도보다 훨씬 중요합니다.
여기서는 집계 프레임 워크가 올바른 방법이라고 가정하지만 매우 빠른 쿼리의 경우 최상의 파이프 라인과 인덱스는 무엇입니까?
문서는 클라이언트 개체를 나타내는 문서 인 '태그'문서가 아니며 단순함을 위해 생략 한 훨씬 많은 데이터 필드를 포함하고 있으며 각 클라이언트에는 여러 개의 태그와 다른 필드가 있습니다. 태그 배열과 혼동). 클라이언트 그룹에있는 모든 태그를 중복하지 않고 세트를 가져와야합니다.
나는 작년과 비슷한 것을 시도했지만 데이터베이스는 훨씬 작았습니다. 데이터 양이 늘어남에 따라 Solr을 사용해야하는 번거 로움이있었습니다. – Martin
당신이 시도한 쿼리와 인덱스를 게시 할 수 있습니까? 집계 프레임 워크를 사용 했습니까? – jacob
죄송합니다. 코드는 오래 전에 없어졌지만 태그 필드의 정규식을 기반으로했습니다. 그것은 어 그리 게이션 프레임 워크를 선행하지만 어쨌든 최선의 접근 방식이 될지 확신하지 못합니다. 내 경험에 따르면 집계 프레임 워크는 전체 문서를 메모리로 읽는 것을 좋아하지만, 일치 항목이 – Martin