Unterschied zwischen createIndex() und ensureIndex() in java mithilfe von mongodb
Was ist der Unterschied zwischen createIndex()
und ensureIndex()
in Java MongoDB? Ich gegoogelt dies aber nicht befriedigende Antwort.
InformationsquelleAutor der Frage Amit Chahar | 2014-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update 2:
Die original-Antwort, sowie das erste update, irrtümlich mit Verweis auf die Mongo-shell-Dokumentation statt, die von der Java-API.
In Java,
DBCollection.ensureIndex()
war veraltet in der version 2.12 und in version 3.0 entfernt.DBCollection.createIndex()
ist die eine, die verwendet werden soll.Update:
db.collection.ensureIndex()
ist veraltet seit version 3.0.0.Ist jetzt ein alias für db.Sammlung.createIndex().
Original:
createIndex()
ist veraltet seit 1.8Es wurde verwendet, um Indizes, die auf Sammlungen in der Erwägung, dass
ensureIndex()
erstellt einen index auf der angegebenen Feldwenn der index nicht bereits vorhanden ist. Außerdem, wenn wir ausführencreateIndex()
zweimal die zweite Ausführung wird nur scheitern in der Erwägung, dass mitensureIndex()
Sie können es aufrufen, mehrere Male, und es wird nicht scheiternUnd eine weitere Sache, die Sie geändert in Bezug auf das Verhalten von
ensureIndex()
die in früheren Versionen von mongodb(Versionen weniger als 2.6) wenn der index-Eintrag für ein vorhandenes Dokument überschreitet die max index Schlüssellänge ein index erstellt werden aber Mongodb würde nicht index solche Dokumente in der Erwägung, dass in der letzten version kein index erstellt werden.InformationsquelleAutor der Antwort sol4me
In der Java-API
DBCollection.ensureIndex()
ist veraltet,genau anders herum im Vergleich zu den "normalen" MongoDB-API (zum Zeitpunkt der Antwort). Update: Diese Inkonsistenz scheint inzwischen geklärt, unddb.collection.createIndex()
jetzt ersetztdb.collection.ensureIndex()
in der Mongo-shell auch.Wie Sie sehen können, in https://jira.mongodb.org/browse/JAVA-1097in Java (was der OP gefragt)
ensureIndex()
war veraltet version2.12.0 der Java-Treiber, und
DBCollection.createIndex()
, die Sie brauchen, um zu verwenden.DBCollection.ensureIndex()
(link auf die version 2.12) ist nicht verfügbar in der DBCollection Java-API mehr.InformationsquelleAutor der Antwort Jens Grivolla
Den
ensureIndex
- Methode in der java-Treiber (v2.12 und älter) zwischengespeichert wird oder nicht, ob der index vorhanden ist, auf die Sammlung. Da mehrere clients können möglicherweise ändern, die Indizes auf eine Sammlung, die cache-Wert kann irgendwann ein Irrtum sein, und der Fahrer würde nicht erstellt einen fehlenden index.Aus diesem Grund das java-Treiber implementiert eine
createIndex
Methode mit identischem Verhalten, außer es wird nicht im cache, index-status.Mit Treiber 2.12 und höher, können Sie ersetzen Sie
ensureIndex
durchcreateIndex
und erwarten das gleiche Verhalten, mit Ausnahme der Leistung trifft, wo die Fahrer hätten früher denken, dass der index bereits vorhanden ist und zurück, ohne das senden der createIndex-Befehl, um die mongo-server.Warum Sie sich nicht ändern, das Verhalten ohne Umbenennung -, dass ich keine Ahnung habe.
InformationsquelleAutor der Antwort GaspardP
Veraltet seit version > 3.0.0:
db.Sammlung.ensureIndex() ist jetzt ein alias für die db.Sammlung.createIndex().
InformationsquelleAutor der Antwort Surender Singh