Si creo una colección en Mongo, y después de agregar documentos a esta colección, utilizo ensureIndex()
para crear un índice en, por ejemplo, un campo numérico en un documento de esta colección, si retiro la colección, ¿tengo que volver a crear la colección? ¿índice?En MongoDB, si se retira la recopilación, ¿los índices cayeron automáticamente también?
Respuesta
Respuesta corta: sí.
Los índices están cayendo en la caída de la colección. Necesitas recrear un índice.
Es posible que no desee dejar caer la colección, pero elimine todos los elementos con db.collection_name.remove({})
. Tomará más recursos, pero deja tus índices. En realidad, tendrá que eliminar todos los datos de índice. Es por eso que es más preferible dejar caer toda la colección y volver a crear índices después de eso.
Al eliminar una colección, se eliminan todos los índices, como sospecha, por lo que cuando vuelva a crear la colección (explícita o implícitamente al agregar documentos nuevos) necesitará recrear los índices que necesite tener. El índice predeterminado en _id
se crea automáticamente para usted.
Ok, entendido, ¿hay algún problema al llamar a ensureIndex() varias veces en la misma colección si el índice ya existe? – raffian
No hay daño. Impacto menor en el rendimiento para verificar si el índice que intentas asegurar ya está allí o no. –
Acabo de hacer esto en una colección con 10 índices y no quería volver a crearlos manualmente. Usted puede lograr una gota y recrear con índices con las siguientes tres líneas en la consola mongo:
var indexes = db.collection.getIndexKeys().splice(1)
db.collection.drop();
indexes.forEach(function(el){ db.collection.ensureIndex(el, {background:true}); })
Esto no es lo suficientemente inteligente como para manejar los índices únicos o escasos, pero creo que sería bastante fácil de apoyar mediante el uso de la salida de getIndexes() en su lugar. No lo necesitaba, así que no lo hice.
El empalme (1) es solo para eliminar el índice en _id, ya que se creará automáticamente.
muchas gracias, pero '{background: true}' borró mis índices, sin que funcione bien –
- 1. Cómo desactivar los índices (temporales) en MongoDB
- 2. ¿Dejar caer una tabla MySQL automáticamente baja los índices de la tabla también?
- 3. índices MongoDB para $ elemMatch
- 4. ¿Alguna manera fácil de saber si los índices mongodb aún se usan o no?
- 5. Al eliminar una restricción, ¿se eliminarán también los índices de soporte?
- 6. eliminar automáticamente referencia a los objetos de supresión en MongoDB
- 7. Reorganizar y reconstruir índices automáticamente
- 8. ¿Los índices se chupan en SQL?
- 9. ¿Una lista de índices en MongoDB?
- 10. franja de consulta se retira de url gráfica abierta
- 11. ¿Cómo implementa MongoDB sus índices espaciales?
- 12. mongodb no usa índices al ordenar?
- 13. ¿Cómo se muestran los índices de NA?
- 14. Consulta MongoDB irrazonablemente lenta, aunque la consulta es simple y está alineada con los índices
- 15. Se une a los índices espaciales mysql
- 16. ¿Se moverán los subobjetos de variables locales también si se devuelve desde una función?
- 17. Asignación de Mongodb ObjectId hacia y desde la cadena automáticamente
- 18. ¿Cómo funcionan los índices compuestos?
- 19. Creación de índices de múltiples campos en Mongoose/MongoDB
- 20. ¿Se pueden adivinar los id de MongoDB?
- 21. MongoDB: IDs generados automáticamente son ceros
- 22. Persistir los campos de recopilación con hibernación
- 23. MongoDB: índices compuestos únicos y dispersas con valores dispersos
- 24. Práctica recomendada para evitar InvalidOperationException: ¿Se modificó la recopilación?
- 25. En Mongo, ¿cómo se muestran los índices de una colección?
- 26. ¿Los bloques Objective-C se liberan automáticamente?
- 27. ¿Cómo saber si un objeto se libera automáticamente o no?
- 28. Cómo filtrar la recopilación en JPA/JPQL?
- 29. SQL Server: cómo determinar si los índices no se están utilizando?
- 30. ¿Los archivos de la carpeta temporal se eliminan automáticamente?
¿Puedo crear un índice en una colección vacía? – raffian
Sí, puedes. La colección se creará cuando crees el índice. –
'remove()' puede llevar mucho tiempo en colecciones grandes. 'drop()' es mucho más rápido, pero tiene la desventaja de eliminar todos los índices, como ya se ha notado. – dcrosta