如何在Cosmos DB中对ARRAY_CONTAINS使用“不在”?

时间:2019-12-17 10:28:22

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

我是Cosmos DB的新手。我正在使用SQL API检索记录。现在我想在ARRAY_CONTAINS中添加“不在”。我做了很多相同的研发工作,但找不到任何解决方案。

2 个答案:

答案 0 :(得分:0)

您不能在ARRAY_CONTAINS中添加“不在”。 Cosmos DB中没有这样的语法。

如果要检索不包含某些值的记录。您可以使用NOT EXISTS。对于下面的示例

SELECT food.id,
    food.description,
    food.tags,
    food.foodGroup
FROM food 
WHERE NOT EXISTS(SELECT VALUE t FROM t IN food.tags WHERE t.name = 'orange')

以上查询将在标签中没有“橙色”的情况下检索所有食品记录。以下是上述查询结果的示例。

{
  "id": "19015",
  "description": "Snacks, granola bars, hard, plain",
  "tags": [
    {
      "name": "snacks"
    },
    {
      "name": "granola bars"
    },
    {
      "name": "hard"
    },
    {
      "name": "plain"
    }
  ],
  "foodGroup": "Snacks"
}

您可以转到Cosmos DB的Query Playground来学习和练习Cosmos DB查询。

答案 1 :(得分:0)

这将查找属性 resolutions(这是一个数组)不包含值“600”的所有项目。

SELECT VALUE root FROM root WHERE (NOT ARRAY_CONTAINS(root["resolutions"], 600))