{ _id: 1, results: [ "tokyo", "japan" ] }
{ _id: 2, results: [ "sydney", "australia" ] }
db.scores.find(
{ results: { $elemMatch: { $regex: *some regex* } } }
)
Как преобразовать этот простой пример elemMatch с помощью критерия запроса данных mongodb?
Если массив содержит объект, я могу сделать это следующим образом
Criteria criteria =
Criteria.where("results").
elemMatch(
Criteria.where("field").is("tokyo")
);
Но в моем вопросе у меня нет "поля"
Обновление:
Я думал, что ответ Вирама сработает после его опробования
Criteria criteria =
Criteria.where("results").
elemMatch(
new Criteria().is("tokyo")
);
Это ничего не возвращает. Я что-то упустил?
Когда я проверяю объект запроса, он сообщает следующее:
Query: { "setOfKeys" : { "$elemMatch" : { }}}, Fields: null, Sort: null
С другой стороны, если я изменю критерии, используя Criteria.where ("поле"), как указано выше,
Query: { "setOfKeys" : { "$elemMatch" : { "field" : "tokyo"}}}, Fields: null, Sort: null
Я что-то получаю, но мои данные структурированы не так, результаты - это массив строк, а не объектов.
Мне действительно нужно использовать регулярное выражение, для простоты, приведенный выше пример использует .is