「_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」をどのように渡すのですか?
クエリas-を使用して解決しました
query.putAll((BSONObject)query);
他の人がこのトピックに関する回答を検索しているかどうかはわかりませんが、「_ 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;
}
特に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
}
あなたはこれを行うことができます
ObjectId id= new ObjectId("4f693d40e4b04cde19f17205");
BasicDBObject obj = new BasicDBObject();
obj.append("_id", id);
BasicDBObject query = new BasicDBObject();
query.putAll((BSONObject)query);