小编典典

如何将数组作为Cosmos DB查询的SQL查询参数传递

sql

我想将数组作为参数传递给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};
}

但是,这种方式是行不通的。我还有其他方法可以将数组作为参数传递吗?谢谢。


阅读 206

收藏
2021-04-28

共1个答案

小编典典

您的查询应如下所示:

SELECT * FROM root r WHERE ARRAY_CONTAINS(@types, r.Type) <> true

那么您可以将其@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

2021-04-28