7
votes

I am using a java program for mongo db insertion trying to create a unique index for a field. product_src is a field in my collection and I want to set it as unique index for avoiding the duplicate insertion. I am trying the following code but showing syntax error what is the problem with this.

DB db;
    try {
        sample = new MongoClient("myIP",PORT);
        db = sample.getDB("client_mahout");
        t = db.getCollection("data_flipkart_in_avoid_duplicate_checking");
        System.out.println("enter the system ip");
        db.t.ensureIndex({"product_src":1});
    } catch (Exception e) {}

t is the collection. there is problem with line db.t.ensureIndex({"product_src":1});

Please give me a sample code how to create unique index in mongo DB

2
What is the exact problem at line db.t.ensureIndex({"product_src":1});? Looking at this line it should be t.ensureIndex({"product_src":1}); - Prashant Thakkar
syntax error on tockens, delete this tockens and red underline under this ({"product_src":1}) and also under t - sarath

2 Answers

15
votes

For future reference, the way to handle this in the Java Mongo driver v3.0+ is by:

public void createUniqueIndex() {
    Document index = new Document("field", 1);
    MongoCollection<Document> collection = client.getDatabase("db").getCollection("Collection");
    collection.createIndex(index, new IndexOptions().unique(true));
}
7
votes

You need to pass a DBObject to the ensureIndex() method.

db.t.ensureIndex(new BasicDBObject("product_src",1))

But, the ensureIndex method has been deprecated since version 2.12, you need to use createIndex() instead.

db.t.createIndex(new BasicDBObject("product_src",1));