2017-01-10 15 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でこのクエリを実行します。

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

ドキュメントが0になるはずのクエリが実行/タイムアウトしないのはなぜですか?ドキュメントが見つかると正常に動作します。

答えて

0

さまざまな種類のインデックスで遊んだ後、私はテキストインデックスがまったく必要ないことに気付きました。

これはおそらく恥ずかしい間違いですが、ちょっと私はmongodbを学び始めました。

とにかく、私がする必要があったのは、address.search_typeの単一フィールドインデックスを作成することでした。

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

私はまだ、私は誰にも負けない言語を設定していたので、テキストインデックスが働いていなかった理由は全くわからないが、それは私が必要となるすべてが単一のインデックスであることを意味します。

テキストインデックスは、大部分のテキストブロックでフレーズやキーワードを検索するために使用されます。だから、私の検索が単一の文字を探していたという事実は、それがテキストインデックスが使われることを意図したものではないので、問題を引き起こしているかもしれません。

関連する問題