シンプルなコードの部分があります。ユニークなインデックス制約のためにエラーが発生します。しかし、両方のオブジェクトはデータベースに追加され、ユニークなインデックスにもかかわらず照会できます。MongoDBユニークインデックスが機能しません
BasicDBObject typeUrlIndex = new BasicDBObject();
typeUrlIndex.put(FIELD_TYPE_URL, 1);
BasicDBObject typeUrlIndexOptions = new BasicDBObject();
typeUrlIndexOptions.put("background", true);
typeUrlIndexOptions.put("sparse", true);
typeUrlIndexOptions.put("unique", true);
typeUrlIndexOptions.put("dropDups", true);
objects.ensureIndex(typeUrlIndex, typeUrlIndexOptions);
// here I can check, that index is really created, and it is true.
List<DBObject> indexes = objects.getIndexInfo();
BasicDBObject dbo1 = new BasicDBObject(FIELD_TYPE_URL, "aaa");
objects.save(dbo1);
BasicDBObject dbo2 = new BasicDBObject(FIELD_TYPE_URL, "aaa");
objects.save(dbo2);
両方のオブジェクトが保存され、異なる_idを取得します。
Upd。 私は何が間違っているかを見つけました。両方のオブジェクトはデータベースに保存した後に独自のIDを取得しますが、実際には2番目のオブジェクトは保存されません(指定されたidであっても照会できません)。
araqnidのおかげで、正しい答えが得られました。残念ながら、私は投票するのに十分な評価がありません。あなたは新しいセッションで見たときに、両方のオブジェクトが現れているインデックス
mongodb unique index documentation
あなたが投票できない場合でも、回答を受け入れ済みとマークすることができます。これにより、質問が回答としてマークされます。 – araqnid
Anton、答えに投票する場所の下にマウスを置いて、そこに表示されているチェックマークをクリックすることで、これを合格とマークすることができます。 – IanWhalen