2017-01-10 4 views
0

나는 나와 함께 겪고있는 오류를 설명하기에 적절한 어휘를 가지고 있는지 확신하지 못합니다.아무 것도 반환되지 않을 때 몽고 텍스트 인덱스가 끝나지 않습니다.

여기

{ 
    _id: ObjectId(), 
    name: String, 
    business: String, 
    address: { 
     search_type: Character, 
     address: String, 
     city: String, 
     state: String, 
     zip: Number 
    } 
} 

나는 그래서 그 내 컬렉션에 필드에 대한 텍스트 인덱스를 만든 address.search_type에 따라 검색하고 싶었 내 컬렉션에 문서에 대한 일반적인 스키마입니다.

{ 
    v: 1, 
    key: { _fts: 'text', _ftsx: 1 }, 
    name: 'address.search_type_text', 
    ns: 'admin.customer', 
    default_language: 'none', 
    weights: { 'address.search_type': 1 }, 
    language_override: 'language', 
    textIndexVersion: 3 
} 

지금 내 데이터가 정말에만 검색 유형으로 C, G, 또는 T가 있어야 내가 지원 search_types 중 하나가이 컬렉션에 찾기 쿼리를 실행할 때 쿼리가 잘 실행하는 것을 알고있다.

db.collection('blah').find({'address.search_type':'C'}).limit(10).toArray(function(err, result){ 
    if(err) console.log(err); 
    else console.log(result[0]); 
    db.close(); 
}); 

하지만 0 문서 내 쿼리 중 하나를 완료하거나 시간 초과 결코를 반환해야 address.search_type이 쿼리를 실행할 때.

문서가 0 일 때 내 쿼리가 실행되지 않거나 시간 초과가 발생하지만 문서를 찾을 수있을 때 정상적으로 작동하는 이유는 무엇입니까?

답변

0

다른 유형의 인덱스로 놀고 난 후에 나는 텍스트 인덱스가 전혀 필요 없다는 것을 깨달았습니다.

이것은 아마도 당황스러운 실수이지만 어쨌든 나는 mongodb을 배우기 시작했습니다.

어쨌든, 내가해야 할 일은 address.search_type에 단일 필드 색인을 만드는 것임을 깨달았습니다.

{ v: 1, 
    key: { 'address.Search_Type': 1 }, 
    name: 'address.Search_Type_1', 
    ns: 'admin.customer' 
} 

나는 아직도 내가 없음으로 언어를 설정했기 때문에 텍스트 인덱스가 작동하지 않는 이유를 완전히 확실하지 않다,하지만 내가 필요로하는 모든이 하나의 인덱스임을 의미가 있습니다.

텍스트 인덱스는 대부분 텍스트 블록에서 구문이나 키워드를 검색하는 데 주로 사용됩니다. 그래서 내 검색이 단일 문자를 찾고 있다는 사실은 텍스트 색인이 의도 된 것이 아니기 때문에 문제를 야기했을 수도 있습니다.