DocumentDB查询数组

Tho*_*tzl 10 sql arrays azure-cosmosdb

我有一个简单(字符串)数组属性的文档.

{
     "id": "one",
     "tags": ["A", "B"]
}

{
     "id": "two",
     "tags": ["A", "C"]
}
Run Code Online (Sandbox Code Playgroud)

要检查,如果某个值是数组的一部分,我可以使用ARRAY_CONTAINS

SELECT * FROM c WHERE ARRAY_CONTAINS(c.tags, "B")
Run Code Online (Sandbox Code Playgroud)

将返回文件"一".

如何查询包含数组中可能值列表的文档?

返回标签数组中至少有一个值为IN("B","C")的所有文档.
- >文件"一"和"两"

And*_*Liu 6

您可以将JOIN用于与嵌套数组元素形成交叉乘积的IN运算符与运算符组合在一起.

SELECT docs
FROM docs
JOIN tags IN docs.tags
WHERE tags IN ("B", "C")
Run Code Online (Sandbox Code Playgroud)

请注意,因为您正在创建跨产品,所以您将获得每个匹配的子元素的结果,而不是每个文档的结果.

或者,您可以将多个ARRAY_CONTAINSOR运算符组合在一起,或者编写UDF.