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

前端 未结 5 1185
你的背包
你的背包 2020-12-01 07:30

I am trying to find documents in MongoDB by searching on \"_id\" key. My document looks like this-

{
  \"_id\" : ObjectId(\"4f693d40e4b04cde19f17205\"),
  \"         


        
相关标签:
5条回答
  • 2020-12-01 07:56

    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;
    }
    
    0 讨论(0)
  • 2020-12-01 07:59

    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);
    
    0 讨论(0)
  • 2020-12-01 08:01

    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
    }
    
    0 讨论(0)
  • 2020-12-01 08:02

    Solved it by using query as-

    query.putAll((BSONObject)query);
    
    0 讨论(0)
  • 2020-12-01 08:02

    You can try this snippet:

    ObjectId id= new ObjectId("4f693d40e4b04cde19f17205");        
    BasicDBObject obj = new BasicDBObject();        
    obj.append("_id", id);        
    BasicDBObject query = new BasicDBObject();        
    query.putAll((BSONObject)obj);
    
    0 讨论(0)
提交回复
热议问题