2016-09-24 2 views
1

Ich möchte aus verschiedenen Indextypen zwei Indizes verwenden (2dsphere und Text) mit diesem Befehl:Geodaten- und Typindex gemeinsam in MongoDB erstellen?

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

aber bekomme ich folgende Fehler:

"errmsg" : "bad index key pattern { @geolocationable: \"2dsphere\", name: \"text\" }: Can't use more than one index plugin for a single index."

Ich las MongoDB Text and 2D compound index aber ich Ich bin mir nicht sicher, warum ich 2Dsphere und Textindex nicht in einer Sammlung erstellen kann.

meine ich nicht, dass ich beide Indizes in einer Abfrage verwenden möchten, während ich diese Indizes in der Reihenfolge von ihnen in separaten Abfragen einzeln

Antwort

0

bearbeiten verwenden erstellen möchten: Verändert die aktualisierte antworten Frage.

Wenn beide Felder in Abfragen getrennt verwendet werden sollen, können Sie zwei verschiedene Indizes anstelle des zusammengesetzten Indexes erstellen.

Der Geospatial Index:

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

Der Textindex:

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

Auch aus docs beachten Sie, dass

A collection can have at most one text index.

Während eine Verbindung Index erstellen, Textindex kann nicht sein, gruppiert mit einem Multi- oder Geospatial-Index. Es ist eine zusammengesetzte Indexbeschränkung.

Vom docs:

A compound text index cannot include any other special index types, such as multi-key or geospatial index fields.

Wenn Sie jedoch nicht Groß- und Kleinschreibung Suche auf name Feld ausführen möchten, können Sie die Verbindung Index mit einem normalen Index anstelle eines Textindex erstellen.

+0

Ich habe die Frage aktualisiert, die ich nicht von beiden Indizes in einer Abfrage verwenden möchte – Mobin

+1

@Mobin: Meine Antwort aktualisiert – 4J41

Verwandte Themen