update remove nodejs item index example data java mongodb mongodb-java

remove - ¿Cómo consultar documentos utilizando el campo "_id" en el controlador mongodb de Java?



update mongodb example (4)

No estoy seguro de si otros pueden estar buscando respuestas sobre este tema, pero esta es la forma más fácil de buscar un registro de MongoDB basado en "_id". La documentación de MongoDB no se actualiza y aún muestra que ObjectId forma parte del paquete com.mongodb (en general, tampoco proporciona mucha información sobre las búsquedas realizadas por 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; }

Estoy intentando encontrar documentos en MongoDB buscando la tecla "_id". Mi documento se ve así

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

Estoy tratando de buscar este documento como

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

Pero me pongo por debajo del error

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

El método anexado de BasicDBObject es compatible (clave de cadena, valor) y si paso "_id" como cadena a este método, no hay documentos que coincidan.

Entonces mi pregunta es ¿cómo paso "_id"?


Para aquellos que buscan un método más actualizado, especialmente con 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 }


Puedes hacerlo

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


Resuelto usando una consulta como

query.putAll((BSONObject)query);