我需要在一個大的MongoDB集合中構建五個索引。我熟悉ensureIndex操作,但我不知道用單個命令創建全部五個索引的方法。 MongoDB中可以創建批量索引嗎?一次構建多個索引
Q
一次構建多個索引
6
A
回答
-1
我認爲這是不可能的使用單一的命令,但你可以創建自己的腳本,這些腳本都會執行相同的操作。如果你的集合規模很大,那麼我建議你用背景分別建立索引,以減少任何鎖定問題的機會。
db.collection.ensureIndex({ a: 1 }, { background: true })
0
至於現在還沒有解決方案。
後臺將阻止數據庫鎖定並允許執行其他操作。但要運行這些操作,您必須打開新的mongo shell,或者使用您選擇的語言(如js)異步運行它們。
但是,如果您需要強大的一致性並且不需要後臺索引構建......您可能需要等待MongoDB本機解決方案來。
2
你錯了,蒙戈有createIndexes命令,因爲2.6(2014之前發佈)
https://docs.mongodb.com/v3.0/reference/command/createIndexes/
文件說,它需要一個通過收集,所以它應該是更快的約5倍。
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"
}
]
>
相關問題
- 1. 構建一個從每個索引值的多個附加
- 2. GNU一次構建多個文件
- 3. 如何在RethinkDB中一次創建多個索引?
- 4. 從一個列表中一次分配多個索引
- 5. MySQL索引結構:多個或單個索引?
- 6. 索引解析器,一次返回一個單詞的建議
- 7. 從多索引csv文件創建一個多重索引熊貓數據框
- 8. 多於一個索引
- 9. MongoDB多個單一索引
- 10. 可可NSIndexSet:多重索引。如何創建索引集,多個索引?
- 11. 在索引中索引一對多關係結構
- 12. 一種多索引,其中一個索引是整個集合
- 13. 如何使多個.NET項目複製只引用一次在構建
- 14. Knex.js架構:多列索引
- 15. Ravendb動態構建索引
- 16. 多列索引VS多個索引
- 17. 一次增加兩個索引
- 18. 每次都留下一個索引
- 19. Zend Lucene&Symfony:一個大的索引與幾個多個索引
- 20. 多次創建新結構
- 21. 一次刪除列表中的多個索引 - python
- 22. 在Python/numpy的分配多個數組索引一次
- 23. 一次獲取NumPy數組中的多個元素的索引
- 24. 創建幾個部分索引,只掃描一次(Postgresql)?
- 25. 多索引中的多個唯一鍵
- 26. 在一個一對多的關係上創建列索引
- 27. Magento,索引問題(一個或多個索引無效)
- 28. Node.js MongoDB創建多個索引:沒有指定索引名
- 29. 基於多個變量創建索引
- 30. 具有多個字段創建索引