我在Cosmos DB中的数据是这样的:
{
id:1,
key:"USA",
states:["New York","New Jersey", "Ohio", "Florida" ]
}
我想检查文档中是否存在状态。例如:“加利福尼亚”。如果存在,那么我想返回true,否则返回false。有人可以帮我获取一个布尔值的查询吗?
答案 0 :(得分:2)
您应该可以使用ARRAY_CONTAINS()
。通常,您可以在WHERE
子句中使用它,但是也可以直接返回布尔值。在您的示例中,您将执行以下操作:
SELECT ARRAY_CONTAINS(c.states, "California")
FROM c
结果如下:
[
{
"id": "1",
"key": "USA",
"$1": true
},
{
"id": "2",
"key": "USA",
"$1": false
}
]
您还可以返回其他属性以及布尔值:
SELECT c.id, c.key, ARRAY_CONTAINS(c.states, "California")
FROM c
如果要确保为属性定义了数组,请检查:
SELECT c.id, c.key, ARRAY_CONTAINS(c.states, "California")
FROM c
WHERE IS_DEFINED(c.states)
最后:您可以为布尔值加上别名,以便它返回实际的属性名称,而不是类似$1
的名称:
SELECT c.id, c.key,
ARRAY_CONTAINS(c.states, "California") AS ContainsCalifornia
FROM c
WHERE IS_DEFINED(c.states)
然后您会得到类似的东西
{
"id": "1",
"key": "USA",
"ContainsCalifornia": true
},
{
"id": "2",
"key": "USA",
"ContainsCalifornia": false
}