你不能像以前那样对两个数组进行相等比较来真正匹配:
where f.columns=newcolumns and f.filters=newfilters
相反,使用Cosmos DB的内置
ARRAY_CONTAINS()
与…结合
ARRAY_LENGTH()
.
自从
columns
是一个标量数组,它看起来像:
WHERE ARRAY_CONTAINS(c.columns, "banana")
AND ARRAY_CONTAINS(c.columns, "apple")
对于
filters
,这不是数组,所以…首先检查以确保定义了键,然后检查值是否正确:
WHERE IS_DEFINED(c.filters.truck) AND c.filters.truck="blue"
AND IS_DEFINED(c.filters.car) AND c.filters.car="red"
注意:将过滤器转换为子文档可能是个好主意,因为您当前的模式是
反模式
(使用值作为键)。类似于:
{
"filters": [
{ "vehicleType": "truck", "color": "blue" },
{ "vehicleType": "car", "color": "red" }
}
在这一点上,你可以与
ARRAY_CONTAINS()
再一次类似于:
WHERE ARRAY_CONTAINS(c.filters, { "vehicleType": "truck", "color": "blue"}, true)