azure-cosmosdb - CosmosDb 在带有数组的“array_contains”的查询中抛出异常?
问题描述
我正在尝试通过传递 id 数组从 CosmosDB 获取多个文档。这是我得到的例外:
Message: {"errors":[{"severity":"Error","location":{"start":88,"end":88},"code":"SC1002","message":"Syntax error, unexpected end-of-file."}]}, Windows/10.0.19043 documentdb-netcore-sdk/2.11.2
这是我的代码(我尝试了不同的参数传递方式):
IList<string> ids = new List<string>();
ids.Add("8D5E4144");
ids.Add("A5964F");
ids = devices.Select(x => x.DeviceId).ToList();
SqlQuerySpec spec2 = new SqlQuerySpec
{
QueryText = "SELECT * FROM c WHERE (c.ttId = @tId And array_contains(@deviceids, c.deviceId)",
Parameters = new SqlParameterCollection()
{
new SqlParameter("@tenantId", tId.ToString()),
new SqlParameter("@deviceids", ids)
}
};
IDocumentQuery<DeviceDBSchema> devicesQuery2 =
CreateDocumentQuery<DeviceDBSchema>(
sqlQuerySpec: spec2,
feedOptions: new FeedOptions()
{
MaxItemCount = (int?)maxResponseCount,
PartitionKey = new PartitionKey(tId.ToString()),
RequestContinuation = continuationToken
}).AsDocumentQuery();
var devicesResults2 =
await devicesQuery2.ExecuteNextAsync<MySchema>(cancellationToken);
有关如何解决此问题的任何帮助或见解都会很棒。谢谢。
解决方案
问题是由于查询中缺少右括号。
推荐阅读
- google-apps-script - 根据 0 中的数字或名称选择特定工作表
- ios - 无法让 WebKit 显示网页
- ruby-on-rails - 出现 ArgumentError(错误数量的参数)错误,但不知道 Rails 中缺少哪些参数?
- vue.js - 如何在不重新加载 vue.js 页面的情况下翻译应用程序?
- angular6 - 如何在 Angular6 中生成表格?
- github - 自动将标签应用于 github 拉取请求
- c# - 如何在 C# 中设置 'Speaker > Mic/Line/Phono-In' 音量
- swift - 覆盖 isReachable 不适用于模拟
- postgresql - teradata 和 postgres 之间的 AVG 窗口函数值的差异
- python - 如何使用 pandas 和 matplotlib 按月创建昼夜资料?