可以在 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)
可以在 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)
编辑 我们刚刚宣布支持查询中的 IN(和其他)关键字 http://azure.microsoft.com/blog/2015/05/06/new-documentdb-sql-keywords-operators-and-functions/
今天; 有两种方法可以解决这个问题
1)编写一个UDF为您执行此操作并在您的选择中使用它
2)或者,您可以对每个 id 进行单独的查询,例如 FormId = 1 和另一个查询 FormId = 2 等。
我知道这涉及多个服务器往返,但取决于您的应用程序与 DocumentDB 服务相关的位置,并行执行多个查询可能不会那么糟糕。
当使用这样的单个谓词发出多个查询时,可以使查询变得超级高效,因为它使用默认情况下存在的属性上的哈希索引。
在 SELECT 的 WHERE 部分中使用 UDF 将导致执行扫描,这可能导致次优性能和更高的查询费用。
PS。如果您希望看到对 IN 运算符的原生支持,请在http://feedback.azure.com/forums/263030-documentdb/suggestions/6395357-in-operator上投票