【发布时间】:2018-11-03 04:07:29
【问题描述】:
您好,我是 MarkLogic 的新手,在阅读 ML 文档时,我发现执行 CTS 查询的性能优于执行普通 XQuery。
要求:我需要将以下 XQuery 转换为 CTS 查询以执行 XPath 及其值的搜索,而且我不想为 XPath 创建路径范围索引,因为我正在动态获取 Xpath。
for $document in collection()[/tXML/Message/TEST/TEST1/TESTID="10"]
return
(
if(fn:not(fn:empty($document/tXML/Message/TEST/TESTID))) then $document/tXML/Message/TEST/TESTID else "NULL",
if(fn:not(fn:empty($document/tXML/Message/TEST/TESTType))) then $document/tXML/Message/TEST/TESTType else "NULL",
if(fn:not(fn:empty($document/tXML/Message/TEST/TESTStatus))) then $document/tXML/Message/TEST/TESTStatus else "NULL"
)
所以请帮我看看是否可以为 Above XQuery 形成 CTS 查询。
【问题讨论】:
-
您能详细说明一下
getting XPath Dynamically位吗?它是作为字符串传递的吗?小心代码注入.. -
我有一个函数,它将 xpath 及其值作为参数,所以这种情况下我从用户那里得到 /tXML/Message/TEST/TEST1/TESTID="10" 并且下次用户可以发送另一个 xpath所以我将其称为“动态获取 XPath”
-
所以你需要一个解析 xpath 并生成等效 cts 查询的函数。用户是传入任意 xpath,还是像您的示例一样始终是直元素路径? xpath 的潜在复杂性将从根本上影响您遇到的问题的难度。
-
感谢 @BenW 添加评论...现在我需要与上述 Xquery 完全相同的 CTS 查询
标签: marklogic marklogic-8 marklogic-9