¿Existe una manera fácil de obtener el ID (ObjectID) del último documento insertado de una instancia de mongoDB usando el controlador Java?
104
Me acabo de dar cuenta de que puedes hacer esto:
BasicDBObject doc = new BasicDBObject( "name", "Matt" );
collection.insert( doc );
ObjectId id = (ObjectId)doc.get( "_id" );
Para evitar la transmisión de Object
a ObjectId
, dados a com.mongodb.client.MongoCollection collection
y a org.bson.Document doc
, puedes hacer lo siguiente:
collection.insert(doc);
ObjectId id = doc.getObjectId("_id");
Es seguro hacerlo
si miras el código del conductor
fuente
it's save to do
oit's safe to do
?No sé sobre el controlador de Java, pero para la posteridad, el comando getLastError se puede ejecutar para obtener el _id de una escritura, incluso un upsert (a partir de 1.5.4)
fuente
Una vez que se inserta un documento en la colección MongoDB, la inserción correcta debe actualizar los campos obligatorios (a saber, _id). Puede consultar el objeto insertado para el _id.
fuente
En MongoTemplate.class tiene un método
y el método establecerá la identificación para nosotros
podemos ver si la entidad es una subclase de BasicDBObject, establecerá una identificación para nosotros.
fuente
Creo que la respuesta a esto es "No".
Lo que puede hacer es proporcionarse usted
_id
mismo, ya sea manualmente o implementar elCollectibleCodec
mecanismo (que es exactamente lo queBasicBDDocument
hace). Sin embargo, todas estas soluciones implican generar el ID del lado del cliente.Habiendo dicho eso, no creo que haya ningún problema con generar el lado del
_id
cliente.fuente
Esta es la operación de inserción:
Después de insertar, obtienes la última identificación insertada:
después de obtener el valor, convertir a tipo inter.
fuente