如何使用.Net XCC检查MarkLogic数据库中的文档是否存在?
答案 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:
”的值作为外部变量传递给查询。