Existe-t-il un moyen simple d'obtenir l'ID (ObjectID) du dernier document inséré d'une instance mongoDB à l'aide du pilote Java?
104
Je viens de réaliser que vous pouvez faire ceci:
BasicDBObject doc = new BasicDBObject( "name", "Matt" );
collection.insert( doc );
ObjectId id = (ObjectId)doc.get( "_id" );
Pour éviter de lancer de Object
vers ObjectId
, étant donné a com.mongodb.client.MongoCollection collection
et a org.bson.Document doc
, vous pouvez effectuer les opérations suivantes:
collection.insert(doc);
ObjectId id = doc.getObjectId("_id");
C'est sûr de faire
si vous regardez le code du pilote
la source
it's save to do
ouit's safe to do
?Je ne connais pas le pilote Java mais pour la postérité, la commande getLastError peut être exécutée pour obtenir le _id d'une écriture, même un upsert (à partir de 1.5.4)
la source
Une fois qu'un document est inséré dans la collection MongoDB, l'insertion réussie doit mettre à jour les champs obligatoires (à savoir. _Id). Vous pouvez interroger l'objet inséré pour le _id.
la source
Dans MongoTemplate.class a une méthode
et la méthode définira l'id pour nous
nous pouvons voir si l'entité est une sous-classe de BasicDBObject, elle définira un identifiant pour nous.
la source
Je pense que la réponse à cette question est «non».
Ce que vous pouvez faire est de vous fournir vous-
_id
même, soit manuellement, soit d'implémenter leCollectibleCodec
mécanisme (ce qui est exactement ce queBasicBDDocument
fait). Cependant, toutes ces solutions impliquent de générer l'ID côté client.Cela dit, je ne pense pas qu'il y ait de problème avec la création du côté
_id
client.la source
C'est l'opération d'insertion:
Après l'insertion, vous obtenez le dernier identifiant inséré:
après avoir obtenu la valeur convertie en type inter.
la source