#mongodb #kotlin #find #pojo #quarkus
#mongodb #котлин #Найти #pojo #quarkus
Вопрос:
Я использую Quarkus и Kotlin, и мне нужно сохранять и извлекать документы из коллекции MongoDB.
Я определил класс данных:
data class Result constructor(
@BsonId
val id: String? = null,
val values: Map<String, Any> = mapOf()
)
StorageService имеет такой атрибут:
private var collection: MongoCollection<Result>
Чтобы вставить результат, я определяю экземпляр класса и использую метод insertOne:
val result = Result(id="exampleId", values=mapOf("one" to 1, "two" to 2))
...
collection.insertOne(result)
Это работает, и я вижу документ, хранящийся в коллекции, с правильным идентификатором.
Когда я выполняю поиск , он не работает:
val result = collection.find(eq("_id", "exampleId")).first()
Дает println(result)
:
Результат (id= null, значения ={})
Не могли бы вы сказать мне, где я делаю неправильно, пожалуйста?
Спасибо
Ответ №1:
Если вы не предоставляете свой собственный кодек для своих классов, будет использоваться кодек POJO.
Для работы с классами данных необходимо выполнить некоторые небольшие действия, это описано в руководстве MongoDB с Panache, даже если вы не используете MongoDB с Panache, он все равно будет применяться: https://quarkus.io/guides/mongodb-panache#working-with-kotlin-data-classes
Существует версия MongoDB для Kotlin с Panache, но она еще не задокументирована.