我需要调用JavaScript来从JSON构建CTS查询吗



在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文档
  • 从返回的文档对象中选择子JSONobject-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()

最新更新