Java Запрос MongoDB с ElementMatch в операторе $ all - PullRequest
0 голосов
/ 13 марта 2020

Привет, у меня возникла проблема с mongotemaplte для создания запроса, подобного этому:

{"metadata" : { 
         "$all" :[
             {"$elemMatch" : {"name" : "key_1", "value" : "value_1"}},
             {"$elemMatch" : {"name" : "key_1", "value" : "value_2"}}
         ]
    }

Я написал этот код:

List<Criteria> criteriaElementMatch = new ArrayList<>();
        for (Map.Entry<String, Set<String>> entry :
                keyValues.entrySet()) {
            for (String value:
                entry.getValue()) {
                criteriaElementMatch.add(new Criteria().elemMatch(Criteria.where("name").is(entry.getKey()).and("value").is(value)));
            }
        }
//add element match to and query
criteria.add(Criteria.where("metadata").all(criteriaElementMatch));

, но распечатав его, я получил:

    { "metadata" : { "$all" : [ 
    { "$java" : org.springframework.data.mongodb.core.query.Criteria@d7d7d656 }, 
    { "$java" : org.springframework.data.mongodb.core.query.Criteria@d7d7d657 } 
    ] 
    }
}

кажется, что новый Criteria (). ElemMatch плохо управляется или в чем я не прав?

заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...