고유 인덱스 제약으로 인해 실패해야하는 간단한 코드 부분이 있습니다. 그러나 개체가 모두 고유 인덱스가 있지만 데이터베이스에 추가되고 쿼리 할 수 있습니다.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가 다릅니다.
업데이트. 무엇이 잘못되었는지 발견했습니다. 두 개체는 모두 데이터베이스에 저장 한 후에 고유 한 ID를 갖지만 두 번째 개체는 실제로 저장되지 않습니다 (지정된 ID로도 쿼리 할 수 없음).
araqnid 덕분에 올바른 답을 얻을 수있었습니다. 불행히도, 나는 투표 할 충분한 등급이 없습니다. 새 세션에서 볼 때 두 개체가 보이고있다 인덱스
mongodb unique index documentation
흠. 투표를 할 수 없어도 대답을 승인 된 것으로 표시 할 수 있어야합니다. 그러면 대답이 답변으로 표시됩니다. – araqnid
안톤, 당신은 당신이 대답에 투표하고 거기에 보이는 체크 표시를 클릭 영역 아래에 가져 가면 받아 들일 수있는 것으로 표시 할 수 있어야합니다. – IanWhalen