将ARRAY_CONTAINS与select语句一起使用



我有一个查询,它几乎返回了我需要的数据:

SELECT *
FROM a in c.Things
WHERE ARRAY_CONTAINS(['ThingA', 'ThingB'], a.Name)

问题是数组['ThingA', 'ThingB']不能硬编码,因为数组中的值应该根据一些查询动态生成。对于这个例子,这个查询是这样的:

select VALUE ARRAY (
SELECT VALUE a.Name
FROM a in c.Things
where a.Visible)
from c
WHERE c.Discriminator='Type'

返回类似于:['ThingOne', 'ThingTwo']

是否可以在ARRAY_CONTAINS中包含这样的查询:

SELECT *
FROM a in c.Attributes
WHERE ARRAY_CONTAINS(
( select VALUE ARRAY(
SELECT VALUE a.Name
FROM a in c.Things
where a.Visible)
from c
WHERE c.Discriminator='Type'
)
, a.Name)

如果我在Cosmos DB Studio中运行此程序,我会收到以下错误:

Microsoft.Azure.Cosmos.Query.Core.Exceptions.ExpectedQueryPartitionProviderException:{quot;errors":〔{quot;severity":"Error"、"location":{"start"147、"end":148}、"code":"SC2001"、"message":"Identifier‘c’无法解析。}

如果我理解正确,您的内部查询独立于外部查询,所以您想要的是一个不相关的子查询。Cosmos DB不支持此功能;文件上写着:

Azure Cosmos DB仅支持相关的子查询。

最新更新