在 MongoDB 集合上为 Web 应用程序创建索引的推荐方法/位置
我正在将 MongoDB 用于我们的 Web 应用程序。假设 MongoDB 上有一个用于传入请求的“find()”。在 MongoDB 集合上添加索引的推荐方式/位置是什么?
我能想到的几个选项:-
1)初始化应用程序时集合上的“ensureIndex”。 [但是我如何在应用程序第一次初始化时“确保索引”?因为不会有任何数据]
2 在每个“查找”操作之前(根据网络请求)“ensureIndex”?但是,即使“ensureIndex”在已经创建的情况下不会创建索引,这不是一种开销吗?
还有其他选择吗?
提前致谢。
I'm using MongoDB for our web application. Assume there will be a 'find()' on MongoDB for incoming requests. What is the recommended way/place to add index on a MongoDB collection ?
Couple of options I can think of:-
1) 'ensureIndex' on the collection while initializing the application. [But how will I 'ensureindex' at the very first time application initialize ? since there won't be any data in place]
2 'ensureIndex' before every 'find' operation (on web request) ? but isn't this an overhead even if 'ensureIndex' wouldn't create index if it is already created ?
Any other options ?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我会在初始化应用程序时放置它。如果调用ensureIndex时集合不存在,则此时将创建索引(和集合)。
我假设您先验地知道将对数据运行什么类型的查询,当然也知道您将把什么类型的数据放入索引中。
I would put it when you initialize the application. If the collection does not exist when you call ensureIndex, the index (and collection) will be created at that time.
I am assuming that you know a priori what kinds of queries you will be running on the data, and what kind of data you will be putting into the index, of course.
当您启动应用程序时,请明确运行ensureIndex。如果您在空集合上调用 EnsureIndex 并不重要(因为它随后会将数据添加到索引中)。
此外,这取决于您的查询基于哪个属性。例如,如果您基于登录用户进行查询,那么您应该在用户 ID 上添加索引。
Clearly run the ensureIndex when you start the application. It doesn't matter if you call the ensureIndex on an empty collection (as it will add the data afterwards to the index).
Furthermore it depends on which property your queries are based. If you for example query based on the logged in user, then you should add the index on the user id.
您可以为要从服务器的命令行运行的集合创建一个初始化脚本(Mongo 文档讨论了如何编写 Mongo 脚本并从 CLI 运行它们)。那么 mongod 启动时它就运行吗?该脚本可以只对集合对象调用ensureIndex()。
You could create a initialisation script for the collection to be run from the command line of your server (the Mongo docs discuss how to write Mongo scripts and run them from the CLI). Then have it run whenever mongod starts? The script could just call ensureIndex() on the collection object.