복붙노트

[MONGODB] 어떻게 자바 MongoDB의 드라이버에서 "_id"필드를 사용하여 쿼리 문서?

MONGODB

어떻게 자바 MongoDB의 드라이버에서 "_id"필드를 사용하여 쿼리 문서?

나는 "_id"키를 검색하여 MongoDB의 문서를 찾기 위해 노력하고있다. this- 같은 내 문서 외모

{
  "_id" : ObjectId("4f693d40e4b04cde19f17205"),
  "hostname" : "hostnameGoesHere",
  "OSType" : "OSTypeGoesHere"
}

나는이 문서를 검색하려고 시스 -

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

그러나 나는 오류 - 아래 얻을

error: reference to putAll is ambiguous, both method putAll(Map) in BasicBSONObject and method putAll(BSONObject) in BasicBSONObject match
        query.putAll(query);

나는이 방법으로 문자열로 "_id"를 전달하면 BasicDBObject 지원 (문자열 키, 값)과 Append 메서드는, 어떤 문서가 일치하지 않습니다.

어떻게 "_id"를 통과 할 내 질문은 그래서?

해결법

  1. ==============================

    1.다른 사람들이 여기에이 주제에 대한 답을 검색 될 수 있지만 확실하다면 "_id"를 기반으로 MongoDB의 기록을 검색 할 수있는 가장 쉬운 방법입니다. MongoDB의 문서가 업데이트 아직도 쇼는 com.mongodb 패키지 (그것은 또한 일반적으로 ObjectId가에 의해 검색에 많은 정보를 제공하지 않음)의 일부로서 ObjectId가되지 않습니다.

    다른 사람들이 여기에이 주제에 대한 답을 검색 될 수 있지만 확실하다면 "_id"를 기반으로 MongoDB의 기록을 검색 할 수있는 가장 쉬운 방법입니다. MongoDB의 문서가 업데이트 아직도 쇼는 com.mongodb 패키지 (그것은 또한 일반적으로 ObjectId가에 의해 검색에 많은 정보를 제공하지 않음)의 일부로서 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;
    }
    
  2. ==============================

    2.특히 3.4, 날짜 메소드에 더를 추구하는 사람들을 위해 :

    특히 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
    }
    
  3. ==============================

    3.이 작업을 수행 할 수 있습니다

    이 작업을 수행 할 수 있습니다

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

    4.쿼리 된 직후을 사용하여 해결

    쿼리 된 직후을 사용하여 해결

    query.putAll((BSONObject)query);
    
  5. from https://stackoverflow.com/questions/9797935/how-to-query-documents-using-id-field-in-java-mongodb-driver by cc-by-sa and MIT license