我如何在 Cosmos DB 中将 "Not in" 与 ARRAY_CONTAINS 一起使用?

How can i use "Not in" with ARRAY_CONTAINS in Cosmos DB?

我是 Cosmos DB 新手。我正在使用 SQL API.now 检索记录 我想在 ARRAY_CONTAINS 中添加 "Not In"。我为此做了很多研发,但找不到任何解决方案。

您不能在 ARRAY_CONTAINS 中添加 "Not In"。 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')

以上查询将检索条件 "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查询。

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

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

您可以像下面的例子一样简单地添加 NOT IN:

SELECT
    food.id,
    food.description,
    food.tags,
    food.foodGroup
FROM 
  food    
WHERE food.id
NOT IN ('ID1', 'ID2', 'ID3')

这已经过测试,效果很好。