使用.Net Xcc检查MarkLogic Collection中的文档

时间:2013-03-07 10:53:46

标签: marklogic

如何使用.Net XCC检查MarkLogic数据库中的文档是否存在?

2 个答案:

答案 0 :(得分:2)

如果性能很重要,您可能希望避免xdmp:document-get-collections的片段提取。如果您启用了URI词典,则可以这样做。

exists(
  cts:uris(
    (), (),
    cts:and-query(
      (cts:document-query($document-uri),
       cts:collection-query($collection-uri)))))

如果有任何文档uris与指定的集合URI和文档URI匹配,则会询问URI词典。

答案 1 :(得分:1)

假设您了解XCC的基础知识,请使用AdHoc查询 http://docs.marklogic.com/6.0/javadoc/xcc/com/marklogic/xcc/AdhocQuery.html

我所知道的最简单方法是使用

  xdmp:document-get-collections()

http://docs.marklogic.com/xdmp:document-get-collections

所以你可以像这样建立一个特别的查询:

xdmp:document-get-collections("doc.xml") = "collection"

注意“=”是一个等于

的集合

结果是布尔值

如果您担心XQuery Injection(即您无法完全控制字符串“doc.xml”,则应使用外部参数。

declare variable $doc external ;
declare variable $collection external ;
xdmp:document-get-collections($doc) = $collection

然后将参数“doc”和“collection:”的值作为外部变量传递给查询。