2012-03-21 12 views
28

"_id"キーを検索してMongoDBで文書を検索しようとしています。マイドキュメントはthis-Java mongodbドライバの "_id"フィールドを使用してドキュメントをクエリする方法はありますか?

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

AS-この文書を検索しようとしています。しかし、私はエラー -

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

の下BasicDBObject支持体のappendメソッド(文字列を取得しますキー、値)、このメソッドに "_id"をStringとして渡すと、一致するドキュメントはありません。

私の質問は "_id"をどうやって渡すのですか?

+0

他の答えはより多くの私を助けました。あなたはこれを受け入れるかもしれない... – Ohmen

答えて

48

ない他の人がこのトピックについての回答を検索する可能性がある場合は必ずAS-クエリを使用して、それを解決しますが、ここでは「_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; 
} 
0

あなたは、特に3.4で、より最新の方法まで求めている人のために、この

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

を行うことができます。

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 
} 
関連する問題