Есть ли простой способ получить идентификатор (ObjectID) последнего вставленного документа экземпляра mongoDB с помощью драйвера Java?
104
Я только что понял, что ты можешь это сделать:
BasicDBObject doc = new BasicDBObject( "name", "Matt" );
collection.insert( doc );
ObjectId id = (ObjectId)doc.get( "_id" );
Чтобы избежать преобразования из Object
в ObjectId
, для заданных a com.mongodb.client.MongoCollection collection
и a org.bson.Document doc
, вы можете сделать следующее:
collection.insert(doc);
ObjectId id = doc.getObjectId("_id");
Это безопасно делать
если вы посмотрите код драйвера
источник
it's save to do
илиit's safe to do
?Я не знаю о драйвере Java, но для потомков команду getLastError можно запустить, чтобы получить _id записи, даже upsert (начиная с 1.5.4)
источник
После того, как документ вставлен в коллекцию MongoDB, успешная вставка должна обновить обязательные поля (а именно _id). Вы можете запросить вставленный объект для _id.
источник
В MongoTemplate.class есть метод
и метод установит нам идентификатор
мы можем видеть, является ли объект подклассом BasicDBObject, он установит для нас идентификатор.
источник
Я думаю, что ответ на это «Нет».
Что вы можете сделать, так это предоставить
_id
себя вручную или реализоватьCollectibleCodec
механизм (что иBasicBDDocument
делает). Однако все эти решения включают создание идентификатора на стороне клиента.Сказав это, я не думаю, что есть проблема с созданием
_id
клиентской части.источник
Это операция вставки:
После вставки вы получите последний вставленный идентификатор:
после получения значения преобразовать в тип inter.
источник