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);