如何解决当有一个 ARRAY 也在另一个 ARRAY 中时,如何在不使用 UNNEST 的情况下使用 ARRAY 函数?
以下是示例文档
[
{
"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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。