3

可以在 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)
4

1 回答 1

2

编辑 我们刚刚宣布支持查询中的 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上投票

于 2015-02-27T21:43:16.470 回答