我想将数组作为参数传递给SqlQuerySpec,以便在构建对天蓝色的db数据库的查询时可以在IN表达式中使用它。我想做的是像我们对常规参数(字符串,整数等)所做的事情:
private SqlQuerySpec BuildQuery(IEnumerable<string> exclTypes) { var queryText = "SELECT * FROM root r WHERE r.Type NOT IN (@types)"; var parameters = new SqlParameterCollection{new SqlParameter("@types", exclTypes.ToArray())}; return new SqlQuerySpec() {QueryText = queryText, Parameters = parameters}; }
但是,这种方式是行不通的。我还有其他方法可以将数组作为参数传递吗?谢谢。
您的查询应如下所示:
SELECT * FROM root r WHERE ARRAY_CONTAINS(@types, r.Type) <> true
那么您可以将其@types作为数组传递,并检查该数组是否包含r.Type文档中属性中具有的值。
@types
r.Type
参考:
https://docs.microsoft.com/zh-cn/azure/cosmos-db/sql-api-sql-query- reference#bk_array_contains https://github.com/Azure/azure-documentdb- node/issues/156