使用数组进行 Cosmos DB 查询

问题描述 投票:0回答:1

我们查看了文档,发现的唯一主要内容是 ARRAY_CONTAINS ,它不能解决我们的问题,因为我们的问题与此相反,即字符串字段是否包含数组的元素。

我们正在尝试创建一个查询,例如一个名为

的字段
Address has a value : "24 The Parkway, London W11AA".

我们希望发送一个字符串数组作为查询参数,例如:

["AA", "way", "Park", "24"]

我们想要进行查询,如果数组的任何/所有元素都在“地址”字段中,则返回 true,否则返回 false。

azure-cosmosdb azure-cosmosdb-sqlapi
1个回答
0
投票

使用数组进行 Cosmos DB 查询

使用 Cosmos DB 中的数组。尝试使用下面的查询,它在

WHERE
条件下使用 RegexMatch,如下面的查询所示。它检查所有子字符串是否都存在于
Address
字段中。

存储在 Azure Cosmos DB 中的示例数据。

[
    {
        "id": "1",
        "Address": "24 The Parkway, London W11AA",
        "AddressKeywords": [
            "24",
            "The",
            "Parkway",
            "London",
            "W11AA"
        ]
     
    },
    {
        "id": "2",
        "Address": "15 Elm Street, New York NY10001",
        "AddressKeywords": [
            "15",
            "Elm",
            "Street",
            "New",
            "York",
            "NY10001"
        ]
    },
    {
        "id": "3",
        "Address": "101 Main Road, Los Angeles CA90012",
        "AddressKeywords": [
            "101",
            "Main",
            "Road",
            "Los",
            "Angeles",
            "CA90012"
        ]
    }
]

我尝试过的查询:

SELECT * FROM c 
WHERE RegexMatch(c.Address, "(?=.*AA)(?=.*way)(?=.*Park)(?=.*24)")

输出:

[
    {
        "id": "1",
        "Address": "24 The Parkway, London W11AA",
        "AddressKeywords": [
            "24",
            "The",
            "Parkway",
            "London",
            "W11AA"
        ]
    }
]
© www.soinside.com 2019 - 2024. All rights reserved.