Динамический агрегатный запрос в шаблоне Mongo и Java

У меня есть сценарий, в котором я получал бы окончательный совокупный запрос в виде строки json. Я использую шаблон java spring mongo для обработки запроса.

mongoTemplate.executeCommand (запрос2);

где query2 - это строка массива с командой агрегирования, если я выполняю запрос в robomongo, он работает нормально, но когда я использовал команду execute, он не работает

query2 = db.exposedDocument.aggregate([{"$match":{"_id":"2520145607210090570"}},{"$lookup":{"localField":"details.asset.info.relatedAssetEntity.uId","as":"relatedAsset","foreignField":"_id","from":"exposedDocument"}},{"$project":{"assetDetails":"$details","assetId":"$_id","_id":0}},{"$project":{"assetDetails.activity":1,"assetDetails.asset.asset.details.circuitDetails.circuitId":1,"assetDetails.ticket":1,"assetDetails.asset.asset.details.accessInterconnect":1,"assetId":1,"assetDetails.asset.asset.details.serviceType":1,"assetDetails.asset.asset.details.accessSpeed":1,"assetDetails.asset.asset.details.deviceId":1,"assetDetails.alarm":1}}])

может ли команда execute обработать этот запрос?

Это не JSON, а код оболочки mongodb / Robo3T. Хотя можно использовать JSON самого конвейера через синтаксический анализатор, вместо этого вам, вероятно, потребуется написать код на языке реализации. Аргументы executeCommand() в любом случае не являются «строкой».

Neil Lunn 23.11.2018 22:11

Я буду получать как часть запроса, и мне нужно использовать как есть. этот запрос верен, как указано, но я не понимаю, как CommandResult result2 = mongoTemplate.executeCommand (query2); api docs, Open Declaration CommandResult org.springframework.data.mongodb.core.MongoTemplate.executeC‌ ommand (String jsonCommand)

TechJump 23.11.2018 23:23

В "запросе" не могу включатьdb.exposedDocument.aggregate. Части «внутри» [] в виде строки - это нормально, но эта ведущая часть даже не JSON. Итак, вы были связаны с обоими ответами, которые объясняют обе эти вещи по какой-то причине.

Neil Lunn 23.11.2018 23:27

Спасибо, Нил. Фактически, я фактически создал json-представление строки, как показано ниже List <JSONObject> json = (List <JSONObject>) parser.parse (querystring); Строка query2 = "db.exposedDocument.aggregate (" + json + ")"; CommandResult result2 = mongoTemplate.executeCommand (query2);

TechJump 23.11.2018 23:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
760
0

Другие вопросы по теме