参考此处的指南,http://docs.mongodb.org/manual/core/indexes/我无法判断字段的 Mongo 索引是否持久存储。
如果ensureIndex()在使用 的应用程序中调用(并完成)MongoDB,如果出现以下情况会发生什么:
MongoDB重新启动。后续调用是否ensureIndex()会导致完全重新索引?MongoDB服务器重新启动。稍后ensureIndex()来自客户端应用程序的调用会重建吗?"MongoDB defines indexes on a per-collection level."使用 MongoDB 的应用程序重新启动。随后对 ensureIndex() 的调用会导致完全重新索引吗?
不,它应该(就像在所有其他驱动程序中一样)注册为 no op,因为索引已经存在。一些驱动程序提供了一种缓存机制来检测索引是否已创建(即 Python),而无需访问服务器。
MongoDB 服务器重新启动。稍后从客户端应用程序调用 ensureIndex() 会重建吗?
和上面一样
有多个客户端会话会影响这些吗?根据文档,我假设索引在整个集合中是全局的:“MongoDB 在每个集合级别定义索引。”
是的,索引存储在集合本身的 MongoDB 中(从技术上讲,作为db.ns文件中的命名空间)。由于它是单点知识,ensureIndex并且索引是单个进程(实际上很像写锁)多个连接不应影响索引创建是否注册两次。
| 归档时间: |
|
| 查看次数: |
1499 次 |
| 最近记录: |