如前所述,需要对作为数组传递的电话号码执行类似的操作。
在宇宙Db中,没有内置函数可以帮助我们实现结果。实现预期结果的方法是使用cosmosDb UDF。下面是相同的代码片段。
function findUserNameByPhone(users, userPhoneNumbers) {
var s, i, j;
let result = [];
for(j = 0; j < userPhoneNumbers.length; j++)
{
for (i = 0; i < users.length; i++)
{
s = users[i];
if(s.userPhoneNumber.match(userPhoneNumbers[j]))
result = result.concat(s);
}
}
return result;
}
在查询中使用udf:-
SELECT udf.findUserNameByPhone(c.users,["4161231234","7202228799"]) FROM c
根据注释进行编辑
在选择查询中使用自定义项。此外,根据您的最新评论,如果您需要基于特定分区键的结果,您可以使用更新后的查询中所示的自联接。像
partitionKey
属性是的一部分
users
数组,因此通过在where子句中传递partitionKey值进行自联接。
SELECT DISTINCT udf.findUserNameByPhone(c.users,["4161231234","7202228799"]) FROM c
JOIN u in c.users WHERE u.partitionKey = "user"
使用Node.js检查在Cosmos DB中使用参数化查询
here