首页 > 解决方案 > 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);

有关如何解决此问题的任何帮助或见解都会很棒。谢谢。

标签: azure-cosmosdbazure-cosmosdb-sqlapi

解决方案


问题是由于查询中缺少右括号。


推荐阅读