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

How to get list of document uri names from a database marklogic?

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

我在 Whosebug 中找到了这一行: 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 的新手,有人可以帮助我吗?

如果没有给定参数,

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

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

有关更多信息,请参阅 fn:doc。如果要检查文档是否存在,只需使用 fn:doc() 和 URI:

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

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

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

如果您只需要从数据库中获取 uri 列表,就可以使用 cts:uris(). It will just return the uri and won't require the full documents to be return like fn:doc()。如果 uri 词典在数据库级别设置为 true,它将在内存索引中启动。

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

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

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 需要启用。