Apakah ada cara mudah untuk mendapatkan ID (ObjectID) dari dokumen yang terakhir disisipkan dari instance mongoDB menggunakan driver Java?
104
Saya baru sadar Anda bisa melakukan ini:
BasicDBObject doc = new BasicDBObject( "name", "Matt" );
collection.insert( doc );
ObjectId id = (ObjectId)doc.get( "_id" );
Untuk menghindari transmisi dari Object
ke ObjectId
, dengan a com.mongodb.client.MongoCollection collection
dan a org.bson.Document doc
, Anda dapat melakukan hal berikut:
collection.insert(doc);
ObjectId id = doc.getObjectId("_id");
Aman untuk dilakukan
jika Anda melihat kode driver
sumber
it's save to do
atauit's safe to do
?Saya tidak tahu tentang driver Java tetapi untuk anak cucu, perintah getLastError dapat dijalankan untuk mendapatkan _id dari penulisan, bahkan upert (mulai 1.5.4)
sumber
Setelah dokumen dimasukkan ke dalam koleksi MongoDB, penyisipan yang berhasil harus memperbarui bidang yang diperlukan (yaitu. _Id). Anda dapat meminta objek yang disisipkan untuk _id.
sumber
Di MongoTemplate.class memiliki metode
dan metode akan menetapkan id untuk kita
kita dapat melihat apakah entitas tersebut adalah sub-kelas dari BasicDBObject, itu akan menetapkan id untuk kita.
sumber
Saya pikir jawabannya adalah "Tidak".
Apa yang dapat Anda lakukan adalah menyediakan
_id
diri Anda, baik secara manual, atau menerapkanCollectibleCodec
mekanisme (yang persis sepertiBasicBDDocument
itu). Namun semua solusi ini melibatkan pembuatan ID di sisi klien.Karena itu, saya tidak berpikir ada masalah dengan menghasilkan sisi
_id
klien.sumber
Ini adalah operasi penyisipan:
Setelah memasukkan Anda mendapatkan id yang terakhir dimasukkan:
setelah mendapatkan nilai convert ke inter type.
sumber