跨多个Mongodb集合并行创建索引

a11xaf1n  于 2023-05-22  发布在  Go
关注(0)|答案(1)|浏览(162)

我有很多集合,它们都有相同的字段,我想索引。我可以使用以下命令执行顺序索引:

db = db.getSiblingDB('mydb');
db.getCollectionNames().forEach(function (collectionName) {
    db.collectionName.createIndex( { orderDate: 1, zipcode: -1 } )
});

我想知道是否有可能在类似的脚本并行创建索引。谢谢你。

sbdsn5lh

sbdsn5lh1#

在任何数据库中,索引生成都不是内部顺序的。您可以考虑两种情况:
1.您的收藏为空。在这种情况下,不需要索引任何数据。因此createIndex命令只需要创建一个索引定义,以备将来使用(写操作)。
1.您的收藏已填充。在这种情况下,将创建索引定义,索引过程将在后台启动,并且当集合中的所有数据都被索引时,只有在那时索引才会被标记为可供使用。
因此,即使你调用createIndex,在这里迭代:

db = db.getSiblingDB('mydb');
db.getCollectionNames().forEach(function (collectionName) {
    db.collectionName.createIndex( { orderDate: 1, zipcode: -1 } )
});

在索引中填充数据的过程在后台完成。因此,如果触发多个这样的命令,它们的数据将在后台并行填充。
在这里阅读更多关于索引构建的信息。Create Index MongoDB.

相关问题