在 Azure Cosmos DB 中按值数组搜索数组

Search in array by array of values in Azure Cosmos DB

文档包含带有字符串数组的字段标记,例如 [“tag1”、“tag2”、“tag3”]。我怎样才能得到所有带有 tag1 和 tag2 的文档?

我试过 ARRAY_CONTAINS,但是对于这个查询,CosmosDB returns 所有带有 tag1 的文档和所有带有 tag2 的文档,而不仅仅是 tag1 和 tag2 在一起的地方。

SELECT VALUE files FROM files JOIN tag IN files.Tags WHERE IS_DEFINED(files.Tags) AND ARRAY_CONTAINS(["tag1", "tag2"], tag, false)

我的示例数据

[
    {
        "id": "23244d53-f4ba-4bf5-90a4-a4073a759232",
        "Tags": [
            "tag1",
            "tag2"
        ]
    },
    {
        "id": "23244d53-f4ba-4bf5-90a4-a4073a759232",
        "Tags": [
            "tag1",
            "tag3"
        ]
    },
    {
        "id": "0bbd57d1-38cb-4094-81cf-33703448bbcd",
        "Tags": [
            "tag1"
        ]
    }
 ]

你可以试试这样的 SQL:

SELECT * 
FROM files 
WHERE IS_DEFINED(files.Tags) AND ARRAY_CONTAINS(files.Tags, "tag1",false) AND ARRAY_CONTAINS(files.Tags, "tag2",false)

结果:

[
    {
        "id": "23244d53-f4ba-4bf5-90a4-a4073a759232",
        "Tags": [
            "tag1",
            "tag2"
        ]
    }
]