通过 REST API 的 Cosmos DB IN 子句

Ash*_*ish 3 azure azure-storage azure-cosmosdb

我无法IN为 Azure Cosmos 文档 DB 制定使用子句的搜索查询

询问

{
  "query": "SELECT * FROM LOADS l WHERE l.schedulingSystem in (@schedulingSystem)",
  "parameters": [
    {
      "name": "@schedulingSystem",
      "value": "A,B"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过在单引号中提供值"value": "'A','B'",但没有成功。我正在使用'x-ms-version', '2018-12-31'标头进行查询

没有错误响应,但得到空白响应(此搜索条件确实存在数据)。

非常感谢任何帮助或指示。

Jay*_*ong 6

如果将参数化 IN 列表与sqlQuerySpec一起使用,则在扩展参数时它将被视为单个值。

请使用方便的方式编写查询,即使用ARRAY_CONTAINS代替,并将项目列表作为单个参数传递。请像这样调整您的查询:

SELECT * FROM LOADS l WHERE ARRAY_CONTAINS(@schedulingSystem, l.schedulingSystem,false)

 "parameters": [
    {
      "name": "@schedulingSystem",
      "value": "['A','B']"
    }
  ]
Run Code Online (Sandbox Code Playgroud)

类似的问题供您参考:

1. https://github.com/Azure/azure-cosmos-dotnet-v2/issues/614

2. Azure DocumentDB (CosmosDB) .Net SDK 位于何处