![](/img/trans.png)
[英]XQuery sequence equivalent in MarkLogic Server-Side JavaScript
[英]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我可以选择集合的子节点,如下所示:
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迭代器是在内存中检索整个文档还是只检索被访问的部分? 例如,在JavaScript版本中将otherLargeObject加载到内存中? javascript版本和xquery版本一样高效吗?
是否有类似以下内容?
var result = [];
for (var justTheNodesIWant in fn:doc()('//someXPath/expression/text()') {
result.concat(justTheNodesIWant);
}
result; // ['a', 'b', 'c', ... ]
是否有使用服务器端javascript实现xquery结果和性能的等效方法?
以下将工作:
var results = [];
for (var exp of xdmp.xqueryEval('fn:doc()/someXPath/expression')) {
results.push(exp);
}
results
其缺点是语言的混合,包括在代码中嵌入代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.