¿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 Objecta ObjectId, dados a com.mongodb.client.MongoCollection collectiony 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 dooit'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
_idmismo, ya sea manualmente o implementar elCollectibleCodecmecanismo (que es exactamente lo queBasicBDDocumenthace). 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
_idcliente.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