在MarkLogic中从多个Collection中搜索和检索?

Njb*_*jbs 1 xquery marklogic

如果我想指定多个集合,如何修复以下代码?(比如'pdf'和'systemA')

for $doc in fn:collection("pdf")
Run Code Online (Sandbox Code Playgroud)

小智 6

如果你想获得那些在文件要么"A""B"集合.在MarkLogic你可以通过多个URI: fn:collection(("A","B")).如果您希望同时包含"A""B"集合中的文档,则必须执行此操作作为搜索

cts:search(doc(), 
  cts:and-query((cts:collection-query("A"),cts:collection-query("B")),"unfiltered")
Run Code Online (Sandbox Code Playgroud)

或手动设置交叉点

let $as := fn:collection("A")
return fn:collection("B")[not(. is $as)]
Run Code Online (Sandbox Code Playgroud)

搜索会更有效,因为它可以使用索引来解决.