如何在 DocumentDB for NodeJS 的 sql 查询中传递函数?
How to pass function in sql query of DocumentDB for NodeJS?
问题 1:我想 运行 使用用户定义函数对 DocumentDB 进行一次查询,
var udf = function(users, userid) {
var s, _i, _len;
for (_i = 0, _len = users.length; _i < _len; _i++) {
s = users[_i];
if (s.userid === userid) {
return true;
}
}
return false;
};
conversationsQuerySpec = {
query: 'SELECT * FROM root r WHERE @fn(r.users, @userid) AND r.id=@id',
parameters: [{
name: '@fn',
value: udf
}, {
name: '@userid',
value: userid
}, {
name: '@id',
value: id
}]
};
但问题是这个查询不是 运行ning 抛出错误。
问题 2:我在 documentDB 中有 1 个对象,数组如下:
var student = {
name: 'piyush',
classes: [{
level: '1st',
medium: 'spanish'
},{
level: '2nd',
medium: 'german'
}]
}
我想运行查询where medium=german,我不想通过level=2nd,我怎么能运行这个查询?
Q1。您必须单独上传 UDF 而不是作为参数。只需在 运行 该查询之前使用适当的 SDK 调用将其插入即可。
- 首先在集合中使用 createUserDefinedFunction 注册 UDF,名称类似于 myUserDefinedFunction。
- 然后您可以在查询中按名称使用它,例如
SELECT * FROM root r WHERE udf.myUserDefinedFunction(r.users, @userid) AND r.id=@id
Q2。这应该有效(未经测试):
SELECT VALUE student FROM student JOIN c in student.classes WHERE c.medium = "german"
问题 1:我想 运行 使用用户定义函数对 DocumentDB 进行一次查询,
var udf = function(users, userid) {
var s, _i, _len;
for (_i = 0, _len = users.length; _i < _len; _i++) {
s = users[_i];
if (s.userid === userid) {
return true;
}
}
return false;
};
conversationsQuerySpec = {
query: 'SELECT * FROM root r WHERE @fn(r.users, @userid) AND r.id=@id',
parameters: [{
name: '@fn',
value: udf
}, {
name: '@userid',
value: userid
}, {
name: '@id',
value: id
}]
};
但问题是这个查询不是 运行ning 抛出错误。
问题 2:我在 documentDB 中有 1 个对象,数组如下:
var student = {
name: 'piyush',
classes: [{
level: '1st',
medium: 'spanish'
},{
level: '2nd',
medium: 'german'
}]
}
我想运行查询where medium=german,我不想通过level=2nd,我怎么能运行这个查询?
Q1。您必须单独上传 UDF 而不是作为参数。只需在 运行 该查询之前使用适当的 SDK 调用将其插入即可。
- 首先在集合中使用 createUserDefinedFunction 注册 UDF,名称类似于 myUserDefinedFunction。
- 然后您可以在查询中按名称使用它,例如
SELECT * FROM root r WHERE udf.myUserDefinedFunction(r.users, @userid) AND r.id=@id
Q2。这应该有效(未经测试):
SELECT VALUE student FROM student JOIN c in student.classes WHERE c.medium = "german"