问题描述
以下是示例文档
[
{
"trans-data":
{
"$Docver":"1.0","ManufId":"1234543","ToyDot":
{
"GrossAmt":"675","Wqty":"200"
},"Mflnitmlst":
[
{
"mfprcdv":"25000","SaleDt1":
[
{
"Mtid":"0987655","ordrqty":"102","Plainqty":"1000"
}
]
},{
"mfprcdv":"25000","SaleDt1":
[
{
"Mtid":"0987656","ordrqty":"110","Plainqty":"1500"
}
]
},"SaleDt1":
[
{
"Mtid":"0987657","ordrqty":"120","Plainqty":"2000"
}
]
}
],"Tmstp":"2021-03-04T14:23:21","Sectn":"XYZ"
}
},{
"trans-data":
{
"$Docver":"1.0","ToyDot":
{
"GrossAmt":"605","Wqty":"100"
},"Mflnitmlst":
[
{
"mfprcdv":"26000","SaleDt1":
[
{
"Mtid":"1987655",{
"mfprcdv":"26000","SaleDt1":
[
{
"Mtid":"1987656","SaleDt1":
[
{
"Mtid":"1987657","Sectn":"XYZ"
}
}
]
我编写了以下 N1QL 查询并得到以下结果
查询:
SELECT disTINCT ARRAY {V.ordrqty,V.Plainqty} FOR V IN M.SaleDt1 WHEN V.ordrqty IN [120] END
FROM `trans-data` AS T
UNnesT Mflnitmlst as M
WHERE t.Sectn="XYZ"
结果:
[{
"$1": []
},{
"$1": [{
"ordrqty": 120,"Plainqty": "2000"
}]
},{}
]
现在我想在不使用 UNnesT 函数的情况下进行查询。有人可以帮忙吗?
解决方法
根据您的条件构造新数组
SELECT ARRAY_DISTINCT(ARRAY_FLATTEN(ARRAY (ARRAY {s.ordrqty,s.Plainqty}
FOR s IN m.SaleDt1
WHEN s.ordrqty IN [120]
END)
FOR m IN t.Mflnitmlst
END,1) ) AS orders
FROM `trans-data` AS t
WHERE t.Sectn="XYZ"
AND (ANY m IN t.Mflnitmlst
SATISFIES (ANY s IN m.SaleDt1
SATISFIES s.ordrqty IN [120]
END)
END);