Как использовать условие OR в mule dataweave для чтения данных из mongodb - PullRequest
0 голосов
/ 10 мая 2019

Mule 3.8.5 + Запрос кода с переплетением данных: -

Я пытаюсь извлечь записи из mongodb, который равен коду, переданному во входном параметре запроса ИЛИ, если код равен статической строке "ВСЕ".

вышеупомянутое не работает, кто-нибудь может предложить правильный синтаксис для записи в компоненте сообщения преобразования?

%dw 1.0
%output application/json
---
 {
    "code" : [ upper inboundProperties."http.query.params".code or "ALL"]
 }

Пример, если я передаю код как "IND", он должен вернуть мне записи, имеющие кодравно "IND" или "ALL".результат = IND, ALL, ALL.

1 Ответ

2 голосов
/ 10 мая 2019

Вы можете использовать default:

%dw 1.0
%output application/json
---
 {
    "code" : [ upper inboundProperties."http.query.params".code default "ALL"]
 }

UPDATE.

На основе синтаксиса запроса монго здесь: https://docs.mongodb.com/manual/tutorial/query-documents/

db.inventory.find( { status: { $in: [ "A", "D" ] } } )

Хотя этот запрос можно выразить с помощью оператора $ или, используйте оператор $ in вместо оператора $ или при выполнении проверок на равенство в одном и том же поле.

Это должно сгенерировать JSON-запрос в правильном формате:

%dw 1.0
%output application/json
%var code = inboundProperties."http.query.params".code
---
{
    "code" : { "\$in": [ upper code, "ALL" ] when code !=null otherwise  ["ALL"] }
}

Возможно, вам потребуется сначала преобразовать ее в строку, прежде чем использовать ее в запросе Монго.

...