我有一个Employees集合,我想要检索10个员工的完整文档,这些员工的ID我想发送到我的SQL SELECT。我该怎么做?
为了进一步澄清,我有10个EmployeeId,我想从Employees集合中提取这些员工的信息。我很感激你的帮助。
答案 0 :(得分:5)
<强>更新强>
从5/6/2015开始,DocumentDB支持IN
关键字;它最多支持100个参数。
示例:
SELECT *
FROM Employees
WHERE Employees.id IN (
"01236", "01237", "01263", "06152", "21224",
"21225", "21226", "21227", "21505", "22903",
"14003", "14004", "14005", "14006", "14007"
)
原始答案:
再加上Ryan的答案......以下是一个例子:
创建以下UDF:
var containsUdf = {
id: "contains",
body: function(arr, obj) {
if (arr.indexOf(obj) > -1) {
return true;
}
return false;
}
};
使用包含UDF是一个SQL查询:
SELECT * FROM Employees e WHERE contains(["1","2","3","4","5"], e.id)
有关创建UDF的文档,请查看DocumentDB SQL reference
您也可以投票赞成实施&#34; IN&#34; &#34; WHERE&#34;的关键字DocumentDB Feedback Forums上的条款。
答案 1 :(得分:3)
您也可以使用OR支持来实现此目的。以下是一个示例 -
SELECT *
FROM Employees e
WHERE e.EmployeeId = 1 OR e.EmployeeId = 2 OR e.EmployeeId = 3
如果您需要比DocumentDB更多的OR数,则必须按employeeId值将查询分解为多个较小的查询。您还可以从客户端并行发出查询并收集所有结果
答案 2 :(得分:1)
今天最好的方法是创建一个Contains()UDF,它接受要搜索的id数组并在WHERE子句中使用它。
答案 3 :(得分:0)