从多个馆藏中检索文件

时间:2018-07-04 05:57:59

标签: marklogic marklogic-8

我将文档存储在Marklogic中,如下所示,

Collection : system, user
Documents Stored
 1. /system/user/1
 2. /system/user/2

Collection : system, role
Documents Stored
 1. /system/role/1
 2. /system/role/2

Collection : system, access
Documents Stored
 1. /system/access/1
 2. /system/access/2

现在,我的要求是我希望所有仅属于系统一部分的文档访问集合,所以我尝试了

for $doc in cts:search(collection(("system", "access")), ())
return 
      (  
        document-uri($doc)
      )

在执行上面的代码后,我希望 / system / access / 1 / system / access / 2 ,因为这两个文档只是的一部分”系统”,“访问” 集合,但在这里我从 Collection:系统,用户 Collection:系统,角色获取所有文档。 我无法理解有关Code的错误,或者我缺少某些内容。

请帮助我解决此问题。

1 个答案:

答案 0 :(得分:4)

您的代码有如下问题-

您存储的所有6个文档都是“ 系统”集合的一部分。

因此很明显,每当您尝试提供 collection(“ system”)时,它将获取所有文档。

另一种情况是-假设您要检索“ 用户”和“访问”集合中的文档。在这种情况下,您可以在 cts:search 查询中使用 cts:and-query

希望有帮助!