Morhia を使用してフィールドに既存のインデックスがあります。
@Indexed
public String field;
今、それを一意のインデックスに変換したいと思います。
@Indexed(unique = true)
public String field;
アプリケーションの起動時に、db.ensureIndexes() を呼び出しますが、インデックスの一意性は mongo に反映されません。
なぜこれが失敗するのですか?これを達成する最良の方法は何ですか?
MongoDBのインデックスのプロパティは、作成後に変更することはできません。したがって、一意でないインデックスを一意のインデックスに直接変換することはできません。一意のインデックスとして再作成する前に、インデックスを手動で削除する必要があります。これは、mongoシェルを使用して直接行うことができます。http ://www.mongodb.org/display/DOCS/Indexes#Indexes-DroppingIndexesを参照してください。