给定两组二进制文档(驻留在两个不同的集合中),我想执行左连接的等价物,其中键是对象属性的一部分。
我正在做这些事情:
Bitmap
哪一点不起作用......
我会非常感谢任何建议!
答案 0 :(得分:3)
MarkLogic允许您将属性片段存储在与文档片段相同的URI中。您可以使用xdmp:document-set-property
执行此操作,建立templateId和objectId属性。然后,您可以使用cts:properties-fragment-query
查询这些属性。您还可以使用xdmp:document-properties
检查特定文档的属性。类似下面的代码,虽然你可能不得不在属性上摆弄XPath。
let $template-query:=
cts:and-query((
cts:collection-query("finances"),
cts:collection-query("http://marklogic.com/collections/dls/latest-version"),
cts:collection-query("templates")
))
let $doc-query :=
cts:collection-query((
cts:collection-query("finances"),
cts:collection-query("http://marklogic.com/collections/dls/latest-version"),
cts:collection-query("documents")
))
for $template-uri in cts:uris((), (), $template-query)
for $doc-uri in cts:uris((), (), $doc-query)
where xdmp:document-properties($doc-uri)/templateId = xdmp:document-properties(template-uri)/objectId
and xdmp:document-properties($doc-uri)/updatedDate < xdmp:document-properties(template-uri)/updatedDate
return fn:doc($doc-uri)
编辑:原始版本将集合与OR而不是AND
组合在一起