tutorial instead indexes index ensureindex deprecationwarning createindexes collection java mongodb mongodb-java

java - instead - mongodb indexes tutorial



Diferencia entre createIndex() y ensureIndex() en java usando mongodb (4)

¿Cuál es la diferencia entre createIndex() y ensureIndex() en Java usando MongoDB? Busqué en Google esto pero no obtuve una respuesta satisfactoria.


El método ensureIndex encontrado en el controlador java (v2.12 y anterior) guardará en caché si el índice existe en la colección o no. Dado que múltiples clientes podrían potencialmente cambiar los índices en una colección, el valor de caché puede ser erróneo en algún momento y el controlador no puede crear un índice faltante.

Por este motivo, el controlador java implementó un método createIndex con un comportamiento idéntico, excepto que no guardará en caché el estado del índice.

Con los controladores 2.12 y posteriores, puede reemplazar ensureIndex por createIndex y esperar el mismo comportamiento, excepto por el rendimiento alcanzado donde el controlador pensaría anteriormente que el índice ya existe y regresará sin enviar el comando createIndex al servidor mongo.

En cuanto a por qué no cambiaron el comportamiento sin cambiar el nombre, eso no tengo idea.


En la API de Java, DBCollection.ensureIndex() está en desuso , exactamente al revés en comparación con la API MongoDB "normal" (en el momento de la respuesta) . Actualización : esta incoherencia parece haberse resuelto desde entonces, y db.collection.createIndex() ahora sustituye también a db.collection.ensureIndex() en el shell de Mongo.

Como puede ver en https://jira.mongodb.org/browse/JAVA-1097 , en Java (sobre lo que OP preguntó) ensureIndex() estaba en desuso en la versión 2.12.0 del controlador de Java y DBCollection.createIndex() es el que necesitas usar. DBCollection.ensureIndex() (enlace a la versión 2.12) ya no está disponible en la API DBCollection Java.


Obsoleto desde la versión> 3.0.0: db.collection.ensureIndex () ahora es un alias para db.collection.createIndex ().


Actualización 2: la respuesta original, así como la primera actualización, hacen referencia erróneamente a la documentación del shell de Mongo en lugar de a la API de Java.

En Java, DBCollection.ensureIndex() se desaprobó en la versión 2.12 y se eliminó en la versión 3.0. DBCollection.createIndex() es el que debería usarse.

Actualizar:
db.collection.ensureIndex() está en desuso desde la versión 3.0.0.
Ahora es un alias para db.collection.createIndex() .

Original:
createIndex() está en db.collection.createIndex()

Se utilizó para crear índices en las colecciones, mientras que ensureIndex() crea un índice en el campo especificado si el índice aún no existe. Además, cuando ejecutamos createIndex() dos veces, la segunda ejecución simplemente fallará mientras que con ensureIndex() puede invocarla varias veces y no fallará.

Y una cosa más que cambiaron con respecto al comportamiento de ensureIndex() , en versiones anteriores de mongodb (versiones menores que 2.6) si la entrada de índice de un documento existente excede la longitud máxima de la clave de índice, se crearía un índice pero Mongodb no indexaría tal documentos mientras que en la versión más reciente no se crearía ningún índice .