Spring MongoDB Data elemMatch Simple - PullRequest
       15

Spring MongoDB Data elemMatch Simple

0 голосов
/ 11 сентября 2018
{ _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

1 Ответ

0 голосов
/ 11 сентября 2018

Вы можете попробовать запрос ниже.

Criteria criteria = Criteria.where("results").elemMatch(new Criteria().gte(80).lt(85));
...