MongoEngine如何处理索引(创建,更新,删除)?

时间:2011-10-13 18:43:29

标签: python mongodb indexing mongoengine

关于设置Mongo索引的最佳实践问题。 Mongoengine是Python ORM包装器,允许您在Document元类中设置索引。

这个元类何时被内省并添加了索引?我可以通过mongoengine Document类构建一个集合,然后在事后添加一个索引吗?

如果我从元类中删除索引,是否会从相应的集合中自动删除索引?

谢谢,

2 个答案:

答案 0 :(得分:4)

您可以随时添加索引,并在后台调用ensureIndex,以便在不存在时添加。

如果从元中删除索引 - 您将不得不使用pymongo或shell来删除索引。

答案 1 :(得分:1)

MongoEngine提供了一个编程构造来维护python应用程序中的所有索引。它使用集合类上的元数据来定义所有索引。这是一个例子

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

上面定义的User类声明了两个索引:1。name(排序顺序)和2. email(散列)。 MongoEngine在第一个upsert操作中创建每个声明的索引。这些索引是通过createIndex / ensureIndex调用在集合上创建的。每次将文档插入集合时,MongoEngine都会尝试创建这些索引。