Azure cosmosdb 在Azure Cosmos DB中按值数组进行搜索

Azure cosmosdb 在Azure Cosmos DB中按值数组进行搜索,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,文档包含带有字符串数组的字段标记,例如[“tag1”、“tag2”、“tag3”]。如何获取同时使用tag1和tag2的所有文档 我尝试了ARRAY_CONTAINS,但在这个查询中,CosmosDB返回带有tag1的所有文档和带有tag2的所有文档,而不仅仅是在tag1和tag2同时存在的地方 SELECT VALUE files FROM files JOIN tag IN files.Tags WHERE IS_DEFINED(files.Tags) AND ARRAY_CONTAINS(

文档包含带有字符串数组的字段标记,例如[“tag1”、“tag2”、“tag3”]。如何获取同时使用tag1和tag2的所有文档

我尝试了ARRAY_CONTAINS,但在这个查询中,CosmosDB返回带有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"
        ]
    }
]

是的,当然可以,但是可能哪里有一些构建it解决方案来摆脱手工构建查询。