我正在尝试使用try.jsonata.org发票数据构建JSONata查询。
我想要提出的查询是select distinct OrderID where Order.Product.Price is < 50?
我无法弄清楚如何使用方括号谓词中的谓词来解决这个问题...当我试图超越$ .Account.Order时,我的尝试被挫败了。产品阵列。
使用$ map和$ reduce我能够提出this rather complex solution ...它仍然没有正确处理重复的OrderID。 (我发现已请求重复删除问题here)
问:在JSONata中表达此查询的正确方法是什么?
答案 0 :(得分:1)
我认为this可以满足您的需求:
Account.Order[Product.Price.($ < 50)].OrderID
谓词中的表达式(针对每个Order
进行测试)将生成一个布尔数组(每个Product.Price
一个)。如果true
中的任何布尔值为true
,则生成的谓词将评估为OrderID
,因为隐式应用了$boolean
function的语义。
总体而言,该表达式将为每个Order
返回Product
,Price
至少有一个50
def function(w, h): #function here is the bmi calculator
bmi = w / h ** 2
return("Your BMI is " + str(bmi))
bmi_user = function(weight, height)
小于def bmi_calculator(w, h):
return w / h ** 2