Spring Data с Mongo: имя вложенного документа в качестве параметра запроса

У меня есть следующая структура документа:

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

Теперь я собираюсь запросить все проекты с пользователем, содержащим «user1» с помощью Spring Data Mongo:

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

Проблема в том, что Spring Data избегает замены в запросах, поэтому у меня есть следующий «настоящий» запрос:

o.s.d.m.r.q.StringBasedMongoQuery — Создан запрос { "users.\"user1\"" : { "$exists" : true}}

Можно ли избежать побега? Конечно, я могу создать собственный запрос, используя критерии Spring, но я бы хотел сохранить подход «@Query».


person avarabyeu    schedule 20.12.2013    source источник
comment
Я не знаю о Spring Data, но если вы хотите сопоставить все документы, содержащие user1. запрос в Mongo db должен быть   -  person c24b    schedule 20.12.2013


Ответы (1)


Передайте полный файл users.user1 в качестве переменной, т.е.:

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

Если вы действительно хотите, чтобы люди не делали этого, используйте вспомогательную функцию, которая добавляет «пользователей». в начале строки вызывает этот метод.

person Tim B    schedule 20.12.2013