Spring Data MongoDB:点表示法中的动态参数

时间:2019-07-19 12:42:40

标签: mongodb spring-data

我有一个User类,它有一个Social类,并且在relations内。
地图将Relation个用户保留给其他用户。

class Social {
    val relations: Map<String, Relation>
    // ...  
}


class Relation(
    val type: RelationType,
    // ...
)

enum class RelationType {
    CONTACT, IN, OUT
}

我有一个UserRepository,它想通过将userId参数注入点表示法语法来查询传出的Relations

@Repository
interface UserRepository : ReactiveMongoRepository<User, String> {

    @Query("{ 'social.relations.?0.type' : 'OUT' }")
    fun findUsers(id: String): Flux<User>
}

问题:
但是在我的测试课上,我得到以下错误:

org.bson.json.JsonParseException: JSON reader was expecting ':' but found 'OUT'.

但是,在Mongo Shell上,查找用户和社交对象

"relations" : {
        "1234567890" : {
            "type" : "OUT",
        }
    }

以及以下查询:

db.user.find({ "social.relations.1234567890.type" : "OUT" })

检索拥有此关系类型的用户。

问题:
如何在Spring Data中编写相同的查询?

0 个答案:

没有答案