Как получить id записи с Kmongo при чтение из коллекции?
Я создал репозиторий MongoRepo, где при помощи функции create я добавляю новую запись типа E, но как получить id записи в функции read?
При этом я не могу изменить структуру функции или тип возвращаемого результата, или сохранить идентификатор во внешней переменной или списке. Нужно, чтобы именно в read функции был доступ к id записи из MongoDB — это возможно?
Мой репозиторий:
class MongoRepo<E>(private val collection: MongoCollection<E>) : Repo<E> {
override fun create(element: E): Boolean {
collection.insertOne(element)
return true
}
override fun read(): List<Item<E>> {
return collection.find().map { element ->
val itemId = collection.find(Item<E>::elem eq element).toString()
Item(itemId, element)
}.toList()
}
Я попытался использовать Document вместо E type, но это тоже не помогает, и я получаю ошибку сериализации.
Ответы (1 шт):
Автор решения: Денис Попков
→ Ссылка
class MongoRepo<E>(private val collection: MongoCollection<E>) : Repo<E> {
override fun create(element: E): Boolean {
collection.insertOne(element)
return true
}
override fun read(): List<Item<E>> {
val idsDocuments = collection.withDocumentClass<Document>().find().distinct()
return collection.find().mapIndexed { index, element ->
val itemId = idsDocuments[index].values.elementAt(0).toString()
Item(itemId, element)
}.toList()
}
Я кастанул коллекцию к документу и нашел айди