0

我正在尝试使用 try.jsonata.org 发票数据构建 JSONata 查询。

我试图提出的问题是select distinct OrderID where Order.Product.Price is < 50?

我无法弄清楚如何使用方括号表示法中的谓词来做到这一点......当我试图通过 $.Account.Order.Product 数组时,我的尝试被挫败了。

使用 $map 和 $reduce 我能够想出这个相当复杂的解决方案......它仍然不能正确处理重复的 OrderID。(我看到这里已经请求了重复删除的问题)

问:在 JSONata 中表达这个查询的正确方法是什么?

4

1 回答 1

1

我认为可以满足您的需求:

Account.Order[Product.Price.($ < 50)].OrderID

谓词中的表达式(针对 each 进行测试Order)将生成一个布尔数组(每个对应一个Product.Price)。由于隐式应用的函数的语义,结果谓词将评估true该数组中的任何布尔值是否为 。true$boolean

总的来说,表达式将返回OrderIDfor each至少Order有一个小于ProductPrice50

于 2018-04-06T09:43:31.477 回答