2

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

4

2 回答 2

2

如果性能很重要,您可能希望避免为xdmp:document-get-collections. 如果您启用了 URI 词典,这是可能的。

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

这会询问 URI 词典是否有任何文档 uri 与指定的集合 URI 和文档 URI 匹配。

于 2013-03-07T22:58:18.507 回答
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 注入(即您无法完全控制字符串“doc.xml”,则应该使用外部参数。

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

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

于 2013-03-07T12:46:43.630 回答