46

「_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) をサポートしており、このメソッドに "_id" を String として渡すと、一致するドキュメントはありません。

だから私の質問は、「_id」をどのように渡すのですか?

4

5 に答える 5

65

他の人がこのトピックに関する回答を探しているかどうかはわかりませんが、「_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;
}
于 2012-10-08T20:09:57.237 に答える
1

query as-を使用して解決しました

query.putAll((BSONObject)query);
于 2012-03-21T03:01:20.323 に答える