如何从数据库marklogic获取文档uri名称列表?

时间:2016-04-12 21:19:14

标签: xml database xquery marklogic xquery-sql

嘿我想从给定的MarkLogic数据库中获取所有文档名称/ uri的列表。

我在stackoverflow中找到了这一行: How to get total number of documents in Marklogic database?

...将获取数据库中的文档计数。我不知道如何修改它以列出所有文档URI。

还给出了一个文档URI,我想看看它是否存在于数据库中?

我尝试了以下内容,但无法实现相同的目标

for $x in xdmp:directory("/myDirectory/", "1")
return
fn:document-uri($x)

我需要一个像这样的Xquery命令。我是marklogic的新手,有人可以帮我吗?

4 个答案:

答案 0 :(得分:10)

如果您需要从数据库中获取所有内容,请使用uri cts:uris()列表。它只会返回uri,并且不会要求像fn:doc()那样返回完整的文档。如果在数据库级别将uri词典设置为true,那么它将在内存索引中启用。

如果要检查文档是否存在,请使用

fn:doc-available("uri of document")

答案 1 :(得分:4)

1-如果您使用过集合,则可以使用

for $each in collection("collection-name") return fn:document-uri($each)

2-如果你有相同的目录结构,那么使用

for $each in xdmp:directory("/myDirectory/", "infinity") return fn:document-uri($each)

3-如果您没有使用上述任何一种情况,可以使用cts:uris() 请注意,为了使用cts:uris(), URI Lexicon需要启用。

答案 2 :(得分:3)

如果没有给出参数,

fn:doc()将返回所有文档的列表,如果给出了URI,则返回文档。因此,要列出数据库中的所有URI,请使用:

for $x in fn:doc()
   return fn:document-uri($x)

有关详情,请参阅fn:doc。如果要检查文档是否存在,只需使用带有URI的fn:doc()

fn:doc("/example/uri.xml")

答案 3 :(得分:0)

查找文档是否存在的另一个选项:

xdmp:exists(doc("uri.xml"))