How to query documents using "_id" field in Java mongodb driver? How to query documents using "_id" field in Java mongodb driver? mongodb mongodb

How to query documents using "_id" field in Java mongodb driver?


Not sure if others might be searching for answers on this topic, but here is the easiest way to search for a MongoDB record based on "_id". The MongoDB documentation is not updated and still shows ObjectId as being part of the com.mongodb package (it also generally does not give a lot of information on searching by ObjectId).

import org.bson.types.ObjectId;public DBObject findDocumentById(String id) {    BasicDBObject query = new BasicDBObject();    query.put("_id", new ObjectId(id));    DBObject dbObj = collection.findOne(query);    return dbObj;}


For those who are seeking a more up to date method, especially with 3.4:

import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoDatabase;import org.bson.Document;import org.bson.types.ObjectId;import static com.mongodb.client.model.Filters.eq;//......MongoCollection<Document> myCollection = database.getCollection("myCollection");Document document = myCollection.find(eq("_id", new ObjectId("4f693d40e4b04cde19f17205"))).first();if (document == null) {    //Document does not exist} else {    //We found the document}


You can do this

 ObjectId id= new ObjectId("4f693d40e4b04cde19f17205");            BasicDBObject obj = new BasicDBObject();            obj.append("_id", id);            BasicDBObject query = new BasicDBObject();            query.putAll((BSONObject)query);