想到几个选项:
选项一:使用cts:values()
cts:values(cts:collection-reference())
如果您查看文档,您会发现您还可以通过将查询作为参数之一传递来将其限制为某些片段。
**更新:[11-10-2017]
附带的评论要求提供将 cts:values() 的结果限制为单个文档的示例(出于实际目的,我会说片段 == 文档)
cts:values 的文档解释了这一点。它是第四个参数 - 限制结果的查询。了解这种模式,因为它是 MarkLogic 的许多功能的一部分。这是你的朋友。我将用于此问题陈述的查询是 cts:document-query();
一个例子:
cts:values(
cts:collection-reference(),
(),
(),
cts:document-query('/path/to/my/document')
)
完整示例:
cts:search(
collection(),
cts:collection-query(
cts:values(
cts:collection-reference(),
(),
(),
cts:document-query('/path/to/my/document')
)
)
)[1 to 10]
选项二:使用cts:collection-match()
需要更多地控制仅返回文档中的一些集合,然后使用 cts:colection-match()。与第一个选项一样,您可以将结果限制为仅一些片段。但是,它的好处是可以选择模式。
注意:
它们都返回一个序列——非常适合输入查询的其他部分。但是,在幕后,我相信它们的工作方式不同。第二个选项是针对词典运行的。唯一集合名称列表越大,模式匹配越复杂,解析的时间就越长。我在项目中使用集合匹配。但是,当我可以通过将结果限制为较少数量的文档来限制可能的选择时,我通常会使用它。