通过REST API的Cosmos DB IN子句

时间:2019-06-20 23:07:13

标签: 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"
    }
  ]
}

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

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

真的很感谢任何帮助或指针。

1 个答案:

答案 0 :(得分:0)

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

请使用一种方便的方式来编写查询,即改用ARRAY_CONTAINS并将项目列表作为单个参数传递。请按以下方式调整您的查询:

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

 "parameters": [
    {
      "name": "@schedulingSystem",
      "value": "['A','B']"
    }
  ]

类似的问题供您参考:

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

2。WHERE IN with Azure DocumentDB (CosmosDB) .Net SDK