PyMongo create_index只有在它不存在的情况下

时间:2016-04-29 13:21:04

标签: python mongodb python-2.7 pymongo

在使用PyMongo的Python脚本中,使用行

为集合创建索引
myCollection.create_index('Datetime', unique=True)

但是,这会在下次执行脚本时抛出错误,因为索引已经存在。

问题:在决定是否致电create_index之前,有没有办法检查索引的存在?

3 个答案:

答案 0 :(得分:11)

您可以使用index_information()方法:

  

获取有关此集合索引的信息。

     

返回一个字典,其中键是索引名称(由返回值返回)   create_index()),值是包含信息的字典   关于每个指数。

index_name = 'Datetime'
if index_name not in myCollection.index_information():
    myCollection.create_index(index_name, unique=True)

还有list_indexes()方法也可用于解决它,但输出格式不像index_information()那样方便。

并且,有ensure_index()方法,看起来正是您所询问的内容,但现在不推荐使用此方法。

答案 1 :(得分:5)

在PyMongo 3.6.0及更高版本中,如果索引已经存在并且不会抛出错误,则调用create_index将不会重新创建索引。如果索引已经存在,则只会忽略索引创建。

答案 2 :(得分:0)

这可能有效:

<Window.Resources>
    <local:TownsConverter x:Key="TownsConverter"/>
</Window.Resources>