Mongo DB删除集合Javadriver中字段中的重复数据

Mongo DB删除集合Javadriver中字段中的重复数据,java,mongodb,indexing,mongodb-java,Java,Mongodb,Indexing,Mongodb Java,我正在尝试使用mongodb中的java驱动程序删除集合中的重复项。 我正在使用代码 table = db.getCollection("dummy_data_OLD"); BasicDBObject query = new BasicDBObject("url", 1) .append("unique", true).append("dropDups", true); table.createIndex(query); 它将创建一个唯一的索引,但数据库中仍然存在重复

我正在尝试使用mongodb中的java驱动程序删除集合中的重复项。 我正在使用代码

 table = db.getCollection("dummy_data_OLD");
    BasicDBObject query = new BasicDBObject("url", 1)
    .append("unique", true).append("dropDups", true);
    table.createIndex(query);
它将创建一个唯一的索引,但数据库中仍然存在重复的索引。
我的代码有问题吗?

这会在
url
unique
dropDups
字段上创建索引。如果要使用选项创建索引,则需要将这些选项作为第二个DBObject提供

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

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

您的代码中的表是什么?它与收藏类似吗?:)@Philipp那是集合名URL是我的字段,但我这个选项是什么?我如何在我的查询中提到这些内容?url是我的文件,这是什么选项?如何在查询中提供选项?@CharlotteEden
Collection.createIndex
has。第一个参数是DBObject,它定义了在其上创建索引的集合中文档的字段。第二个DBObject定义该索引上的选项,如
unique:true
dropdups:true
。您需要这两个单独的对象,因为
unique
dropdupe
是完全有效的字段名。如果没有差异,数据库将不知道您是否尝试在所述字段上设置选项或创建索引;BasicDBObject query2=新的BasicDBObject(“唯一”,true)。追加(“dropDups”,“true”);表2.ensureIndex(查询,查询2);我尝试了上面的方法,但是现在我得到了这个异常com.mongodb.WriteConcernException:{“serverUsed”:“/192.168.11.107:27017”,“connectionId”:324,“err:“在索引构建中也可以使用dropDups=true”,“code”:10092,“n”:0,“ok”:1.0}位于com.mongodb.CommandResult.getException(CommandResult.java:77)