【问题标题】:How does MongoEngine handle Indexes (creation, update, removal)?MongoEngine 如何处理索引(创建、更新、删除)?
【发布时间】:2011-12-07 05:13:08
【问题描述】:

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

什么时候对这个元类进行自省并添加索引?我可以通过 mongoengine Document 类构建一个集合,然后添加一个索引吗?

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

谢谢,

【问题讨论】:

    标签: python mongodb indexing mongoengine


    【解决方案1】:

    您可以随时添加索引,ensureIndex 将在后台调用,因此如果它不存在则会添加。

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-02-08
        • 1970-01-01
        • 2013-10-18
        • 1970-01-01
        • 2019-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多