Windows Azure DocumentDB查询IN语句

时间:2015-02-27 21:13:23

标签: azure where azure-cosmosdb

可以在DocumentDB查询中使用IN语句吗?像:

SELECT * FROM  c  where c.FormId in(1,2,3,4,5,6,7,8,9,10)

我不想使用OR,因为有限制(只有6个)

where (c.FormId =1 or c.FormId= 2 or c.FormId =3
Or c.FormId = 4  Or c.FormId=5 Or c.FormId=6)

1 个答案:

答案 0 :(得分:2)

修改 我们刚刚宣布支持查询中的IN(和其他)关键字 http://azure.microsoft.com/blog/2015/05/06/new-documentdb-sql-keywords-operators-and-functions/

今天;有两种方法可以解决这个问题

1)编写一个UDF为您执行此操作并在您的选择

中使用它

2)或者,您可以根据身份识别单独进行查询。其中FormId = 1,另一个查询FormId = 2等。

我知道这涉及多个服务器往返,但根据您的应用程序与DocumentDB服务相关的位置,并行执行多个查询可能不会那么糟糕。

使用像这样的单个谓词发出多个查询时,查询可以超级高效,因为它使用默认情况下属性的哈希索引。

在SELECT的WHERE部分中使用UDF将导致执行扫描,这可能导致次优性能和更高的查询费用。

PS。如果您希望为IN运营商本地添加支持,请在http://feedback.azure.com/forums/263030-documentdb/suggestions/6395357-in-operator

上投票支持