在MarkLogic中,有没有一种方法可以从XQuery中的JSON序列化构建CTS查询(而不必调用JavaScript(?我在这里只看到了一个使用JavaScript的JSON示例(以及使用XQuery的XML(,但没有看到使用XQuery的JSON示例:https://docs.marklogic.com/guide/search-dev/cts_query#id_17645
当我运行以下代码时,我成功地获得了所需的结果,但我只想在XQuery中完成:
let $script := 'var json; cts.query(fn.head(xdmp.fromJsonString(json)))'
return
xdmp:javascript-eval($script, map:entry("json", '{"wordQuery":{"text":["hello"], "options":["lang=en"]}}'))
能做到吗?
xdmp:from-json-string()
可用于解析JSON字符串。它将构造一个JSON对象(基本上是一个专门的映射(- 您可以使用
xdmp:to-json()
将该JSON对象转换为JSON文档 - 从返回的文档对象中选择子JSON
object-node()
,并发送到cts:query()
以将其解析为cts:query
像这样:
xdmp:from-json-string('{"wordQuery":{"text":["hello"], "options":["lang=en"]}}')
! xdmp:to-json(.)/object-node()
! cts:query(.)
使用xdmp:unquote()
是一种更短、更简单的方法
xdmp:unquote('{"wordQuery":{"text":["hello"], "options":["lang=en"]}}')/object-node()
=> cts:query()