【问题标题】:Spring Data with Mongo: Subdocument name as query parameter带有 Mongo 的 Spring Data:子文档名称作为查询参数
【发布时间】:2014-01-09 08:08:15
【问题描述】:

我的文档结构如下:

{
    "_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”方法。

【问题讨论】:

  • 我不知道 Spring Data 但如果你想匹配每个包含 user1 的文档。 Mongo db中的查询应该是

标签: spring-data spring-data-mongodb


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-07-21
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2016-07-11
    • 2013-09-12
    • 1970-01-01
    • 2020-12-10
    相关资源
    最近更新 更多