Монго запрос к Java - PullRequest
       36

Монго запрос к Java

0 голосов
/ 24 апреля 2018

В настоящее время Mongo Java Driver 3.6.3 поддерживает отображение POJO
http://mongodb.github.io/mongo-java-driver/3.6/bson/pojos/
которые уменьшают количество шаблонного кода, который должен быть написан
Это большое улучшение для выполнения запросов нативного монго
Однако есть еще одна вещь, которая должна быть сделана на мой взгляд

Создание простых запросов на нативном монго в java
Пример не такого сложного запроса может выглядеть так:

List<Document > pipeline = new ArrayList<>();
BasicDbList list = new BasicDbList();
list.add(1);
list.add(2);

Document match = new Document()
    .append("$match", new Document()
        .append("something",
            new Document().append("$in", list))
    );

BasicDBList someFlagParams = new BasicDBList();
fieldConditionSum.add("$some_flag");
fieldConditionSum.add(1);
fieldConditionSum.add(0);

BasicDBList secondFlagParams = new BasicDBList();
fieldConditionSum.add("$other_flag");
fieldConditionSum.add(1);
fieldConditionSum.add(0);

Document group = new Document()
    .append(GROUP, new Document()
        .append("_id", "$some_column")
        .append("some_flag", new Document()
            .append("$sum, new Document()
                .append("$cond", someFlagParams)
            ))
        .append("other_flag", new Document()
            .append("$sum", new Document()
                .append("$cond", otherFlagParams)
            ))
    );

pipeline.add(match);
pipeline.add(group);

Как видите, это можно сделать, однако это немного больно ...

Для этой проблемы я бы увидел два возможных решения:
1. Консольный инструмент с открытым исходным кодом
Я хотел бы иметь инструмент с таким API, например:

queryconverter -lang java -input file_with_native_mongo_queries.txt -output java_queries.txt 

, который генерирует представление запроса монго на выбранном языке

2. Какой-то Mongo Query Util, который подготовит орг.бсон. Документ для меня
Я просто хочу подготовить нативный запрос монго в виде строки и передать необходимые именованные параметры
Я хотел бы иметь что-то вроде этого:

MongoCollection<Document> collection = mongoDatabase.getCollection("example_collection");
String stringQuery = "{ ... some complicated query ...  :paramA ......:paramB ...};
MongoQueryParams params = new MongoQueryParams();
params.add("paramA", 100);
params.add("paramB", "something");

Document docQuery = MongoQueryConverter.generate(stringQuery, params);
List<POJO> myPojos = collection.find(docQuery, POJO.class).into(new ArrayList<>());

С таким решением мир был бы прекрасен :)
- easy wheezy POJO mapping
- Легкое создание запроса на нативном монго в Java

Может быть, я что-то упустил,
Есть ли какое-либо подобное решение для этой проблемы уже?

Для уточнения:
- Я ТОЛЬКО хочу запускать нативные монго запросы
- Я не хочу использовать какие-либо ORM
- Я не хочу использовать Jongo, потому что я вижу, что он не поддерживается активно и я не хочу использовать сопоставление POJO, отличное от поддерживаемого Mongo Java Driver
который активно поддерживается

...