CosmosDB-OR运算符无法与JOIN一起使用

时间:2019-02-14 17:37:27

标签: sql azure-cosmosdb

我的收藏集中有两个文件:

execute statement ... on external data source ...

和:

{
  "ViewAll": true,
  "GroupIDs": []
}

我希望以下查询返回两个文档:

{
  "ViewAll": false,
  "GroupIDs": ["super-admin"]
}

但是我只取回第二份文档。

在处理查询时,我注意到,如果我排除了WHERE子句但保留了JOIN,它仍然将结果集限制为仅具有GroupID的结果集。

SELECT VALUE c FROM c 
JOIN groupIDs in c.GroupIDs
WHERE (c.ViewAll = true OR groupIDs IN("super-admin"))

因为GroupIDs数组中没有条目,所以JOIN是否限制了结果集?有没有办法得到我想要的结果?

1 个答案:

答案 0 :(得分:1)

  

因为没有条目,所以JOIN是否限制了结果集   GroupIDs数组?

答案是“是”。因此,也许您可​​以使用ARRAY_CONTAINS代替JOIN来实现您的要求。

SELECT VALUE c FROM c 
where c.ViewAll = true or ARRAY_CONTAINS(c.GroupIDs, "super-admin",true)

输出:

enter image description here

此外,您可以参考我以前的案例:cosmos db query self join with null array