4

私は、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 インデックスの名前を更新するにはどうすればよいですか? これを行うことにリスクはありますか?

4

1 に答える 1

5

残念ながら、これは MongoDB 3.0.3 では不可能です。公式ドキュメントは、インデックスを削除して再作成することを提案しています

于 2015-05-15T09:37:10.557 に答える