如何在Marklogic中使用cts:seach动态获取值?

时间:2018-11-12 10:55:48

标签: xquery marklogic

我的数据库中有“ n”个文档,我需要使用我提供的元素和值来动态搜索文档。我在下面解释它-

在我的数据库中采样文档-

document1-
<root>
    <id1>12345</id1>
    <value>Country</value>
    <node1>somevalue</node1>
    <node2>somevalue</node2>
    <node3>somevalue</node3>
    <node4>somevalue</node4>
    .......................
</root>

document2-
<root>
    <id2>34567</id2>
    <value>Fruits</value>
    <node1>somevalue</node1>
    <node2>somevalue</node2>
    <node3>somevalue</node3>
    <node4>somevalue</node4>
    .......................
</root>

我需要提供输入参数作为Rest End Point来执行我的操作,并且对其余xml文档的输入如下-

INPUT XML-

<root>
 <id>id1</id>
 <idvalue>12345</idvalue>

 .......................
</root>

我需要的输出显示在示例中-

示例-从数据库中搜索所有具有Id = Id1且其值= 12345的文档

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以探索MarkLogic的示例查询(QBE)。有关更多详细信息,请访问URL https://docs.marklogic.com/guide/search-dev/qbe

答案 1 :(得分:0)

XPath可以提取输入值以构建cts.elementValueQuery()。

类似于以下内容的方法应在SJS中起作用:

cts.search(cts.elementValueQuery(
    xs.QName(fn.string(input.xpath('/root/id'))),
    fn.string(input.xpath('/root/idvalue'))
    ))

或类似于XQuery中的以下内容:

cts:search(fn:collection(), cts:element-value-query(
    xs:QName(fn:string($input/root/id)),
    fn:string($input/root/idvalue)
    ))

有关更多信息,请参见http://docs.marklogic.com/cts.elementValueQuery

希望有帮助,