我需要在一个大的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. 具有多个字段创建索引