Проблемы при создании запроса Mongo с использованием Morphia с вложенными критериями $ и и $ или - PullRequest
0 голосов
/ 27 мая 2019

Необходимость динамического построения запроса Монго на основе шаблона выражения. Но заметил, что построенный запрос Morphia дает неверные результаты даже при жестко закодированных критериях

Создан BasicDAO с помощью morphia-1.3.2.jar. Создал модульный тест с System.out.println, создав запрос с ожидаемыми критериями.

System.out.println("Test Query" + 


    ((CriteriaContainerImpl) query1.and(
                                    query1.or(
                                                 query1.criteria("_id").equal("234"), query1.criteria("_id").equal("456")
                                              ),
                                    query1.and(
                                                query1.or(
                                                            query1.criteria("_id").equal("789"), query1.criteria("_id").equal("666")
                                                           ),
                                                query1.criteria("_id").equal("459")
                                                )
                                        )
                            )
                        .getQuery().toString());

Фактический результат:

{ query: { "_id" : "459", "$or" : [{ "_id" : "789" }, { "_id" : "666" }] }  }

Это результат, полученный как часть вышеприведенного оператора печати. ​​

Ожидаемый результат:

{query: 
{ "$and":[
            { "$or" : [{ "_id" : "234" }, { "_id" : "456" }] } ,
            {"$and":[
                { "$or" : [{ "_id" : "789" }, { "_id" : "666" }] },
                {"_id":459}
                    ]
            }     ] }}

1 Ответ

0 голосов
/ 29 мая 2019

обновление до Morphia 1.5.0 или выше решает эту проблему.Получил решение от форума Morphia.https://github.com/MorphiaOrg/morphia/issues/1278

...