如何查询Cosmos DB并获取布尔值(如果该项存在)

时间:2019-02-26 00:14:48

标签: c# azure-cosmosdb azure-cosmosdb-sqlapi

我在Cosmos DB中的数据是这样的:

{    
  id:1,    
  key:"USA",  
  states:["New York","New Jersey", "Ohio", "Florida" ]         
}

我想检查文档中是否存在状态。例如:“加利福尼亚”。如果存在,那么我想返回true,否则返回false。有人可以帮我获取一个布尔值的查询吗?

1 个答案:

答案 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
}