Kotlin KMongo 库嵌套查询不起作用

Kotlin KMongo library nested query not working

如果嵌套属性查询正在使用,这总是返回null,我不知道为什么,只是按照官网文档document link

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)

型号class代码

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()

您需要使用@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 字节码中有多个可能的注释位置。因此,您需要明确说明。更多详情 here.