想象一下,我有Cosmos中的数据
[
{
"id": "FCEC01CD-A6E9-4DEA-8DD5-89711B5B05A1",
"sub": [
{
"id": 1,
"v": false
},
{
"id": 2,
"v": false
}
]
]
我希望查询所有包含所有(sibbeling)' sub' v = false的项目 什么查询语法可以工作? (ARRAY_CONTAINS不起作用,因为这会产生“任何结果”
谢谢!
答案 0 :(得分:1)
您需要一个用户定义的功能。
function arrayAllMatch(arr) {
for(i=0; i < arr.length; i++) {
if (arr[i].v === true) {
return false;
}
}
return true;
}
然后在查询中调用(也包括ARRAY_CONTAINS,因为它可以使用索引来减少对UDF的调用次数):
SELECT *
FROM c
WHERE ARRAY_CONTAINS(c.sub, {"v" : false }, true)
AND udf.arrayAllMatch(c.sub)