1

このコマンドを使用して、異なるインデックス タイプ (2dsphere とテキスト) の 2 つのインデックスを使用したい:

db.mycoll.createIndex({"@geolocationable":"2dsphere",name:"text"})

しかし、次のエラーが表示されます。

"errmsg": "不適切なインデックス キー パターン { @geolocationable: \"2dsphere\", name: \"text\" }: 1 つのインデックスに対して複数のインデックス プラグインを使用することはできません。"

MongoDB Text と 2D 複合インデックスを読み ましたが、1 つのコレクションで 2dsphere とテキスト インデックスを作成できない理由がわかりません。

別々のクエリで個別に使用するためにこのインデックスを作成したいのに、1 つのクエリで両方のインデックスを使用したいという意味ではありません。

4

1 に答える 1

0

編集:更新された質問に答えるように変更されました。

両方のフィールドをクエリで別々に使用する場合は、複合インデックスの代わりに 2 つの異なるインデックスを作成できます。

地理空間インデックス:

db.mycoll.createIndex({"@geolocationable":"2dsphere"})

テキスト インデックス:

db.mycoll.createIndex({name:"text"})

また、ドキュメントから次のことに注意してください

コレクションは、最大で 1 つのテキスト インデックスを持つことができます。

複合インデックスの作成中、テキスト インデックスをマルチ インデックスまたは地理空間インデックスとグループ化することはできません。これは、複合インデックスの制限です。

ドキュメントから:

複合テキスト インデックスには、マルチキー フィールドや地理空間インデックス フィールドなど、他の特殊なインデックス タイプを含めることはできません。

ただし、フィールドで大文字と小文字を区別しない検索を実行しない場合nameは、テキスト インデックスの代わりに通常のインデックスを使用して複合インデックスを作成できます。

db.mycoll.createIndex({"@geolocationable":"2dsphere",name:1})
于 2016-09-24T14:28:04.007 に答える