2017-01-09 61 views
0

當我向集合中添加一個新文檔並運行createIndex()函數時會發生什麼。 MongoDB是否在整個集合上構建了一個新的索引(耗費時間和資源)?或者是MongoDB只更新單個文檔的索引(時間和資源節約)?我不知道,因爲我發現這個文檔(3.0)中:是否構建createIndex()在整個集合上的新索引?

默認情況下,建立的MongoDB在前臺,這將阻止所有的讀寫操作到數據庫中,而該指數建立索引。此外,在前臺索引編譯期間,不需要對所有數據庫(例如listDatabases)執行讀取或寫入鎖定的操作。

我在問,因爲我需要一個動態的2dsphere索引,它會不斷更新。如果需要在整個集合中每次構建索引,則需要花費太多時間。

回答

0

構建索引會索引所有現有文檔,並且還會導致所有將來的文檔都被索引。因此,如果您將insert新文檔導入已經索引的集合(或update現有文檔的索引字段),索引將得到更新。

當您調用createIndex並且相同字段上的相同類型的索引已經存在時,則什麼都不會發生。

相關問題