从Marklogic查询结果中删除关联数据

时间:2018-09-27 20:59:05

标签: marklogic marklogic-8

使用以下查询,我想修改选项,以便仅检索值。查询返回路径,相关性以及值。我只需要这些值,以便可以出于报告目的对其进行编辑。我可以了解如何完成此任务吗?我还在Marklogic 8中使用Javascript API。

results = jsearch.documentSelect(cts.search($error_details), 
                     {namespaces: {//emf:namespace is declared here},
                      extract: {paths: ['//emf:properties/emf:property[@key = "filename"]/.',
                               '//emf:properties/emf:property[@key = "idnumber"]/.',
                               '//emf:properties/emf:property[@key = "error description"]/.',
                               '//emf:properties/emf:property[@key = "error code"]/.']}
                     }).toString();

查询

cts.andQuery([
cts.elementRangeQuery(fn.QName('uri','creation-time'), ">=", $startDate),
cts.elementRangeQuery(fn.QName('uri','creation-time'), "<", $endDate),
cts.elementValueQuery(fn.QName('uri','component-name'), "InvalidFiles" ),
cts.elementValueQuery(fn.QName('uri','category'), "error")
])

2 个答案:

答案 0 :(得分:1)

在这种情况下,听起来好像不需要jsearch.documentSelect()包装器。

cts.search()函数在MarkLogic 8中将文档作为ValueIterator返回。

处理文档的一种简单方法是链接toArray()函数(如cts.search()。toArray()一样),然后链接标准数组map()或reduce()函数以转换文档进入报告。

脚注:cts.search()返回MarkLogic 9中的Sequence,但是序列也具有toArray()函数。

希望有帮助,

答案 1 :(得分:0)

有多个search options,可让您自定义搜索响应。例如,您可以使用以下选项禁用返回聚合:

<options xmlns="http://marklogic.com/appservices/search">
  <return-aggregates>false</return-aggregates>
</options>
  

查询返回路径,相关性以及值。

如果您用“相关性”来表示得分,信心和适应性,我认为没有选择的余地。