Java mongodb ドライバーの "_id" フィールドを使用してドキュメントをクエリする方法は? 質問する

Java mongodb ドライバーの

私は「_id」キーで検索してMongoDB内のドキュメントを見つけようとしています。私のドキュメントは次のようになります。

{
  "_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);

BasicDBObject の append メソッドは (String Key, Value) をサポートしており、このメソッドに String として "_id" を渡すと、一致するドキュメントは存在しません。

私の質問は、「_id」をどうやって渡すかということです。

ベストアンサー1

他の人がこのトピックに関する回答を探しているかどうかはわかりませんが、ここでは「_id」に基づいて MongoDB レコードを検索する最も簡単な方法を紹介します。MongoDB のドキュメントは更新されておらず、ObjectId がパッケージの一部として引き続き表示されていますcom.mongodb(また、一般的に 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;
}

おすすめ記事