2015-01-23 2 views
1

mongodb에서 java 드라이버를 사용하여 컬렉션에서 중복을 제거하려고합니다. 나는 그것은 고유 인덱스를 생성합니다 코드를Mongo DB 컬렉션의 필드에서 Duplicate 제거하기 Javadriver

table = db.getCollection("dummy_data_OLD"); 
    BasicDBObject query = new BasicDBObject("url", 1) 
    .append("unique", true).append("dropDups", true); 
    table.createIndex(query); 

를 사용하여, 여전히 DB에 존재하는 복제하고 있습니다. 내 코드에 문제가 있습니까?

+0

코드에있는 * 테이블 * 항목은 무엇입니까? 그것은 컬렉션과 비슷한 것입니까? :) – Philipp

+0

컬렉션 이름은 @ 필립 – Juhan

답변

3

이것은 필드url, uniquedropDups에 대한 인덱스를 생성한다. 옵션을 사용하여 인덱스를 만들려면 두 번째 DBObject로 제공해야합니다.

DBObject fields = new BasicDBObject("url", 1); 
DBObject options = new BasicDBObject("unique", true).append("dropDups", true); 

db.getCollection("dummy_data_OLD").createIndex(fields, options); 
+0

URL은 내 필드지만,이 옵션은 무엇입니까? 내 쿼리에서 그런 것들을 어떻게 언급합니까? – Juhan

+0

URL은 제가 제출 한 것이며이 옵션은 무엇입니까? 내 쿼리에서 옵션을 어떻게 제공합니까? – Juhan

+0

@CharlotteEden'Collection.createIndex'에는 [두 개의 매개 변수 형식]이 있습니다 (http://api.mongodb.org/java/current/). 첫 번째 매개 변수는 인덱스를 만드는 컬렉션의 문서 필드를 정의하는 DBObject입니다. 두 번째 DBObject는'unique : true' 또는'dropDupes : true'와 같은 인덱스에 대한 옵션을 정의합니다. 'unique'와'dropDupes'가 완벽하게 유효한 필드 이름이기 때문에이 두 개의 개별 객체가 필요합니다. 차이가 없으면 데이터베이스에서 옵션을 설정하거나 해당 필드에 인덱스를 만들려고하는지 알 수 없습니다. – Philipp