2015-02-23 82 views
6

我需要在一個大的MongoDB集合中構建五個索引。我熟悉ensureIndex操作,但我不知道用單個命令創建全部五個索引的方法。 MongoDB中可以創建批量索引嗎?一次構建多個索引

回答

-1

我認爲這是不可能的使用單一的命令,但你可以創建自己的腳本,這些腳本都會執行相同的操作。如果你的集合規模很大,那麼我建議你用背景分別建立索引,以減少任何鎖定問題的機會。

db.collection.ensureIndex({ a: 1 }, { background: true }) 
0

至於現在還沒有解決方案。

後臺將阻止數據庫鎖定並允許執行其他操作。但要運行這些操作,您必須打開新的mongo shell,或者使用您選擇的語言(如js)異步運行它們。

但是,如果您需要強大的一致性並且不需要後臺索引構建......您可能需要等待MongoDB本機解決方案來。

3

這在shell中非常簡單,有一個createIndexes集合的擴展,您只需傳入想要創建索引的鍵。

db.test.createIndexes([ 
     { "a" : 1 }, 
     { "b" : 1 }, 
     { "c" : 1 }, 
     { "d" : 1 }, 
     { "e" : 1 } 
    ]); 

這將然後給我們以下

> db.test.getIndexes() 
[ 
     { 
       "v" : 2, 
       "key" : { 
         "_id" : 1 
       }, 
       "name" : "_id_", 
       "ns" : "test.test" 
     }, 
     { 
       "v" : 2, 
       "key" : { 
         "a" : 1 
       }, 
       "name" : "a_1", 
       "ns" : "test.test" 
     }, 
     { 
       "v" : 2, 
       "key" : { 
         "b" : 1 
       }, 
       "name" : "b_1", 
       "ns" : "test.test" 
     }, 
     { 
       "v" : 2, 
       "key" : { 
         "c" : 1 
       }, 
       "name" : "c_1", 
       "ns" : "test.test" 
     }, 
     { 
       "v" : 2, 
       "key" : { 
         "d" : 1 
       }, 
       "name" : "d_1", 
       "ns" : "test.test" 
     }, 
     { 
       "v" : 2, 
       "key" : { 
         "e" : 1 
       }, 
       "name" : "e_1", 
       "ns" : "test.test" 
     } 
] 
>