112 votes

Obtenir l'ID du dernier document inséré dans un pilote mongoDB w / Java

Existe-t-il un moyen simple d'obtenir l'identifiant (ObjectID) du dernier document inséré d'une instance mongoDB à l'aide du pilote Java?

201voto

Matt W Points 2367

Déteste répondre à ma propre question, mais je viens de me rendre compte que vous pouvez faire ceci:

 BasicDBObject doc = new BasicDBObject( "name", "Matt" );
collection.insert( doc );
ObjectId id = (ObjectId)doc.get( "_id" );
 

13voto

zlob Points 111

C'est sûr de faire

 doc.set("_id", new ObjectId())
 

si vous regardez le code du conducteur

 if ( ensureID && id == null ){
    id = ObjectId.get();
    jo.put( "_id" , id );       
}

public static ObjectId get(){
    return new ObjectId();
}
 

7voto

chx Points 5381

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 d'un upsert (à partir de la version 1.5.4).

4voto

Ramesh Points 159

Lorsqu'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.

-2voto

user27 Points 77

C'est l'opération d'insertion:

 DBCollection table1 = db.getCollection("Collection name");
BasicDBObject document = new BasicDBObject();
document.put("_id",value);      
document.put("Name", name);
table1.insert(document);
 

Après avoir inséré, obtenez le dernier identifiant inséré:

 DBCollection tableDetails = db.getCollection("collection name");
BasicDBObject queryDetails = new BasicDBObject();
queryDetails.put("_id", value);
DBCursor cursorDetails =tableDetails.find(queryDetails);
DBObject oneDetails;
oneDetails=cursorDetails.next();        
String data=oneDetails.get("_id").toString();
System.out.println(data);
 

après avoir obtenu la valeur, convertir en type inter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X