我正在努力为我们的 MongoDB 部署生成删除/创建脚本。我们希望在我们的开发、测试和生产环境中,所有 MongoDB 数据库/集合在结构上都是相同的。为此,我们决定在 ensureIndex 时间命名索引。问题是,如何更新已经存在的索引的名称?我所知道的行不通的只是使用指定的“名称”重新运行 ensureIndex,例如....
// existing indexes, note its name is "groups_1"...
dmReplSet:PRIMARY> db.system.indexes.find();
{ "v" : 1, "key" : { "groups" : 1 }, "ns" : "test.config", "name" : "groups_1" }
...
// attempt to change its name by re-issue ensureIndex command...
dmReplSet:PRIMARY> db.config.ensureIndex( { "groups" : 1 }, { "name" : "config_groups_ix" } );
// Nope, name is still "groups_1"...
dmReplSet:PRIMARY> db.system.indexes.find();
{ "v" : 1, "key" : { "groups" : 1 }, "ns" : "test.config", "name" : "groups_1" }
...
如何更新已经存在的 mongo 索引的名称?这样做有什么风险吗?