何时在mongodb中使用ensure_index

时间:2015-05-26 18:36:35

标签: mongodb pymongo

我有一个mongo db集合,每秒更新一次(添加一条新记录)。在index属性上调用ensure_index ONCE还是必须重复调用它 - 例如在添加每个文档之后?

我知道ensure_index会查看上次调用它并可能重新索引该集合。我不明白为什么在我的情况下这应该是必要的(或者我不知道在我的情况下这是否必要)。如果索引或索引属性的顺序不随时间变化,每次添加新文档时是否需要重复调​​用一次ensure_index?

2 个答案:

答案 0 :(得分:1)

PyMongo' ensure_indexMongo Shell ensureIndex不完全相同。

在3.0版之前的PyMongo中,ensure_index 尝试只有在驱动程序的缓存中已经存在时才会创建索引 。后来是内存缓存中的每个驱动程序的实例(其用户可配置的TTL)。因此,这可能导致令人困惑的情况,其中一个客户端可能会丢弃索引,而另一个客户端认为它仍然存在。

请注意,从3.0开始,ensure_index已被弃用,您现在应该始终使用create_index - 如果索引已经存在,则优先失败。

答案 1 :(得分:1)

你应该只打电话一次。实际上这种方法是无能为力的,这意味着一旦你在属性上创建索引,重复相同的endureIndex将没有效果'