嘿我想从给定的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的新手,有人可以帮我吗?
答案 0 :(得分:10)
如果您需要从数据库中获取所有内容,请使用uri cts:uris()
列表。它只会返回uri,并且不会要求像fn:doc()
那样返回完整的文档。如果在数据库级别将uri词典设置为true,那么它将在内存索引中启用。
如果要检查文档是否存在,请使用
答案 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"))