2016-04-29 74 views
6

它在使用PyMongo Python腳本,用於收集使用線路PyMongo CREATE_INDEX只有當不存在

myCollection.create_index('Datetime', unique=True) 

但是這個劇本是因爲索引執行下一次將拋出一個錯誤創建索引已經存在。

問題:在決定是否調用create_index之前,有沒有辦法檢查索引的存在?

回答

9

您可以使用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()方法,看起來正是你所問的,但現在這個方法已被棄用。

+0

index_information()返回的字典的鍵是索引名稱(由create_index返回),它們與索引鍵不同。你確定你的代碼有效嗎? 請注意,創建索引時可以指定自定義名稱。 –

0

在PyMongo(3.6.0)的當前版本中,調用create_index將不會重新創建該索引,如果它已經存在並且不會引發錯誤。如果索引已經存在,索引創建將被忽略。