我们查看了文档,发现的唯一主要内容是 ARRAY_CONTAINS ,它不能解决我们的问题,因为我们的问题与此相反,即字符串字段是否包含数组的元素。
我们正在尝试创建一个查询,例如一个名为
的字段Address has a value : "24 The Parkway, London W11AA".
我们希望发送一个字符串数组作为查询参数,例如:
["AA", "way", "Park", "24"]
我们想要进行查询,如果数组的任何/所有元素都在“地址”字段中,则返回 true,否则返回 false。
使用数组进行 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"
]
}
]