首页 > 解决方案 > Kotlin KMongo 库嵌套查询不起作用

问题描述

如果使用嵌套属性查询,这总是返回null,我不知道为什么,只是关注官方网站文档文档链接

database.getCollection<User>().findOne(User::auth / Auth::ssaid eq p.ssaid, User::auth / Auth::password eq p.password) 

没有嵌套属性查询一切都很好。

database.getCollection<User>().findOne(User::lastlogin eq p.lastlogin)

模型类代码

data class Auth(val password: String, val ssaid: String, val localLastLogin: String)

data class User(
    @BsonProperty(useDiscriminator = true) val auth: Auth,
    val lastLogin: String = Instant.now().toString(),
    val members: List<Member> = emptyList(),
    val channels: List<Channel> = emptyList()
) : Data()

标签: mongodbkotlinkmongo

解决方案


您需要@field:BsonProperty按如下方式使用:

data class User(
    @field:BsonProperty(useDiscriminator = true) val auth: Auth,
    val lastLogin: String = Instant.now().toString(),
    val members: List<Member> = emptyList(),
    val channels: List<Channel> = emptyList()
) : Data()

原因是从相应的 Kotlin 元素生成了多个 Java 元素,因此在生成的 Java 字节码中有多个可能的注释位置。因此,您需要明确说明它。更多细节在这里


推荐阅读