我有一个mongo db集合,每秒更新一次(添加一条新记录)。在index属性上调用ensure_index ONCE还是必须重复调用它 - 例如在添加每个文档之后?
我知道ensure_index会查看上次调用它并可能重新索引该集合。我不明白为什么在我的情况下这应该是必要的(或者我不知道在我的情况下这是否必要)。如果索引或索引属性的顺序不随时间变化,每次添加新文档时是否需要重复调用一次ensure_index?
答案 0 :(得分:1)
PyMongo' ensure_index
与Mongo Shell ensureIndex
不完全相同。
在3.0版之前的PyMongo中,ensure_index
尝试只有在驱动程序的缓存中已经存在时才会创建索引 。后来是内存缓存中的每个驱动程序的实例(其用户可配置的TTL)。因此,这可能导致令人困惑的情况,其中一个客户端可能会丢弃索引,而另一个客户端认为它仍然存在。
请注意,从3.0开始,ensure_index
已被弃用,您现在应该始终使用create_index
- 如果索引已经存在,则优先失败。
答案 1 :(得分:1)
你应该只打电话一次。实际上这种方法是无能为力的,这意味着一旦你在属性上创建索引,重复相同的endureIndex将没有效果'