【问题标题】:Recommended way/place to create index on MongoDB collection for a web application为 Web 应用程序在 MongoDB 集合上创建索引的推荐方式/位置
【发布时间】:2011-12-08 15:49:56
【问题描述】:

我将 MongoDB 用于我们的 Web 应用程序。假设 MongoDB 上有一个用于传入请求的“find()”。在 MongoDB 集合上添加索引的推荐方式/位置是什么?

我能想到的几个选项:-

1) 初始化应用程序时集合上的“ensureIndex”。 [但是我将如何在第一次应用程序初始化时“确保索引”?因为不会有任何数据]

2 'ensureIndex' 在每次“查找”操作之前(根据网络请求)?但是即使'ensureIndex'如果已经创建就不会创建索引,这不是开销吗?

还有其他选择吗?

提前致谢。

【问题讨论】:

  • create_index() 是现代的调用方法,所有 API 都有一个类似命名的方法。

标签: mongodb pymongo


【解决方案1】:

您可以为要从服务器的命令行运行的集合创建一个初始化脚本(Mongo 文档讨论了如何编写 Mongo 脚本并从 CLI 运行它们)。然后让它在 mongod 启动时运行?该脚本可以在集合对象上调用 ensureIndex()。

【讨论】:

    【解决方案2】:

    在启动应用程序时明确运行 ensureIndex。对空集合调用 ensureIndex 没关系(因为它会在之后将数据添加到索引中)。

    此外,这取决于您的查询所基于的属性。例如,如果您基于登录用户进行查询,那么您应该在用户 ID 上添加索引。

    【讨论】:

      【解决方案3】:

      我会在您初始化应用程序时放置它。如果调用 ensureIndex 时集合不存在,则此时会创建索引(和集合)。

      我假设您先验地知道您将对数据运行哪些类型的查询,以及将哪些类型的数据放入索引中,当然。

      【讨论】:

      • +1 另外值得一提的是db.coll.ensureIndex({foo:1}) 可以在字段foo 上创建索引,即使集合为空。
      猜你喜欢
      • 2019-08-12
      • 2018-04-13
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多