什么是服务器端javascript相当于xquery的xpath
What is the server side javascript equivilant to xpath for xquery
给出这样的集合:
collection : [
'doc1.json' : {
someXPath : [
{ expression : 'a' },
{ expression : 'b' },
{ expression : 'c' },
],
otherLargeObject : [ ... ]
},
'doc2.json' : {...},
'doc3.json' : {...}
]
使用 Xquery 我可以 select 集合的子节点如下:
fn:doc()//someXPath/expression/text()
结果是这样的:
[ 'a', 'b', 'c', ... ]
以上语法简洁,结果只包含我想要的数据。
使用 Javascript 我会尝试以下操作:
var results = [];
for (var doc of fn:doc()) {
if (doc.someXPath) {
results.push(doc.someXPath.map(function (x) {
return x.expression;
})
}
}
javascript 代码冗长且不通用。 xquery 示例匹配具有不同嵌套级别的其他文档结构,而不需要额外的条件。
doc 迭代器是检索内存中的整个文档还是仅检索访问的部分?例如otherLargeObject 是否在 javascript 版本中加载到内存中? javascript 版本和 xquery 版本一样高效吗?
有可能是下面这样的吗?
var result = [];
for (var justTheNodesIWant in fn:doc()('//someXPath/expression/text()') {
result.concat(justTheNodesIWant);
}
result; // ['a', 'b', 'c', ... ]
是否有使用服务器端实现 xquery 结果和性能的等效方法 javascript?
以下将起作用:
var results = [];
for (var exp of xdmp.xqueryEval('fn:doc()/someXPath/expression')) {
results.push(exp);
}
results
缺点是语言的混合,包括在字符串中嵌入代码。
给出这样的集合:
collection : [
'doc1.json' : {
someXPath : [
{ expression : 'a' },
{ expression : 'b' },
{ expression : 'c' },
],
otherLargeObject : [ ... ]
},
'doc2.json' : {...},
'doc3.json' : {...}
]
使用 Xquery 我可以 select 集合的子节点如下:
fn:doc()//someXPath/expression/text()
结果是这样的:
[ 'a', 'b', 'c', ... ]
以上语法简洁,结果只包含我想要的数据。
使用 Javascript 我会尝试以下操作:
var results = [];
for (var doc of fn:doc()) {
if (doc.someXPath) {
results.push(doc.someXPath.map(function (x) {
return x.expression;
})
}
}
javascript 代码冗长且不通用。 xquery 示例匹配具有不同嵌套级别的其他文档结构,而不需要额外的条件。
doc 迭代器是检索内存中的整个文档还是仅检索访问的部分?例如otherLargeObject 是否在 javascript 版本中加载到内存中? javascript 版本和 xquery 版本一样高效吗?
有可能是下面这样的吗?
var result = [];
for (var justTheNodesIWant in fn:doc()('//someXPath/expression/text()') {
result.concat(justTheNodesIWant);
}
result; // ['a', 'b', 'c', ... ]
是否有使用服务器端实现 xquery 结果和性能的等效方法 javascript?
以下将起作用:
var results = [];
for (var exp of xdmp.xqueryEval('fn:doc()/someXPath/expression')) {
results.push(exp);
}
results
缺点是语言的混合,包括在字符串中嵌入代码。