Как MongoEngine обрабатывает индексы (создание, обновление, удаление)?

Вопрос о лучшей практике установки индексов Mongo. Mongoengine, оболочка ORM Python, позволяет вам устанавливать индексы в мета-классе Document.

Когда проводится интроспекция этого метакласса и добавляется индекс? Могу ли я создать коллекцию с помощью класса документа mongoengine, а затем добавить индекс после этого?

Если я удалю индекс из метакласса, будет ли он автоматически удален из соответствующей коллекции?

Спасибо,


person Ben    schedule 13.10.2011    source источник


Ответы (2)


Вы можете добавить индекс в любое время, и ensureIndex будет вызываться за кулисами, поэтому он будет добавлен, если он не существует.

Если вы удалите индекс из мета - вам придется использовать pymongo или оболочку для удаления индекса.

person Ross    schedule 31.01.2012

MongoEngine предоставляет программную конструкцию для поддержки всех индексов из вашего приложения Python. Он использует метаданные класса коллекции для определения всех ваших индексов. Вот пример

class User(Document):
    meta = {        
    'indexes': [
    {
         'fields': ['+name']                   
    },
    {
         'fields': ['#email']
    }]             
}

Класс User, определенный выше, объявляет два индекса: 1. имя (порядок сортировки) и 2. адрес электронной почты (хешированный). MongoEngine создает каждый объявленный индекс при первой операции обновления. Эти индексы создаются в коллекции с помощью вызова createIndex / sureIndex. MongoEngine пытается создавать эти индексы каждый раз, когда документ вставляется в коллекцию.

person VISHAL KUMAWAT    schedule 08.03.2017