使用Mongo的Spring数据:子文档名称作为查询参数

时间:2013-12-20 12:50:13

标签: spring-data spring-data-mongodb

我有以下文档结构:

{
    "_id": "project1",
    "customer": "someDefaultCustomer",
    "users": {
        "user1": {
            "projectRoles": ["CUSTOMER"]
        }
    }
}

现在,我将使用Spring Data Mongo查询用户包含'user1'的所有项目:

@Query("{'users.?1': {$exists : true} }")
Project findUserProject(String login);

问题是Spring Data在查询中逃脱了替换,因此我得到了以下“真实”查询:

o.s.d.m.r.q.StringBasedMongoQuery - 创建的查询{ "users.\"user1\"" : { "$exists" : true}}

是否可以避免逃跑?当然,我可以使用spring标准创建自定义查询,但我想保持'@Query'方法。

1 个答案:

答案 0 :(得分:0)

将完整的users.user1作为变量传递,即:

@Query("{?1: {$exists : true} }")

如果你真的想避免人们不得不这样做,那么就有一个辅助函数来添加“用户”。在字符串的开头,然后调用此方法。