Я пишу RESTful API для поиска в коллекции MongoDB с именем «global» по критериям, используя TextQuery. Моя проблема в том, что я не могу получить доступ к полям вложенных объектов при выполнении запроса.
Например, это работает:
GET localhost:8080/search?criteria=name:'name'
И это не так:
GET localhost:8080/search?criteria=other.othername:'Other Name'
У меня есть структура MongoDB json (импортированная из JSON в 'global 'коллекция как целые вложенные объекты)
[{
"name": "Name",
"desc": "Desc",
"other" {
"othername": "Other Name",
}
},
{
"name": "Name",
"desc": "Desc",
"other" {
"othername": "Other Name",
}
}
]
И классы (с геттерами и сеттерами и т. д. c):
@Document(collection="global")
public class Global{
@TextIndexed
String name;
@TextIndexed
String desc;
Other other;
...
}
public class Other{
String othername;
...
}
Мой контроллер имеет метод
@GetMapping("/search")
public Iterable<Global> getByCriteria(@RequestParam("criteria") String criteria) {
...
}
И я пытаюсь написать текстовый поиск с помощью
public Iterable<Global> findByCriteria(String criteria) {
TextCriteria criteria = TextCriteria.forDefaultLanguage().matching(criteria);
TextQuery query = TextQuery.queryText(criteria);
return mongoTemplate.find(query, Global.class);
}