Marklogic 用反斜杠标记逻辑目录

Marklogic 用反斜杠标记逻辑目录,marklogic,Marklogic,目前,已将多个文档加载到MarkLogic中,并使用错误的文件分隔符“\”(反斜杠),如下所示 \TEST\fldr1\fldr2\fldr3\test.xml \TEST\fldr1\fldr2\fldr3\test1.xml \TEST\fldr1\fldr2\fldr3\test2.xml 当我尝试表演时 cts:directory-query("\TEST\fldr1\fldr2\fldr3\", "1") 我得到下面的错误 Directory URI must end with

目前,已将多个文档加载到MarkLogic中,并使用错误的文件分隔符“\”(反斜杠),如下所示

\TEST\fldr1\fldr2\fldr3\test.xml
\TEST\fldr1\fldr2\fldr3\test1.xml
\TEST\fldr1\fldr2\fldr3\test2.xml
当我尝试表演时

cts:directory-query("\TEST\fldr1\fldr2\fldr3\", "1") 
我得到下面的错误

Directory URI must end with "/"

请告诉我如何处理这个问题。

对于这些URI,MarkLogic看不到目录,因此即使转义反斜杠,目录查询也无法工作。要进行目录查询,您需要重新插入它们。如果没有太多,可以使用此代码执行此操作:

(: TEST IN YOUR ENVIRONMENT BEFORE RUNNING! :)
for $uri in cts:uri-match('\*')
return (
  xdmp:document-insert(
    fn:replace($uri, '\\', '/'),
    fn:doc($uri),
    xdmp:document-get-permissions($uri),
    xdmp:document-get-collections($uri)
  ),
  xdmp:document-delete($uri)
)

根据您拥有的文档数量,您可以在查询控制台中执行此操作。如果没有,您可以增加事务时间限制或查看

这些文件有多少?就那三个?有什么原因不能用正确的字符作为路径分隔符重新插入它们吗?您是如何加载文件的?您需要在MarkLogic数据库中使用正斜杠。如果您告诉我们您是如何加载文件的,我们可以提出建议。不幸的是,我不知道文档是如何加载的。在这种状态下加载了一百万个文档。另外,请记住,这会插入一个新文档。它不会删除原始版本。您仍然需要这样做(当然,在确认您的新文档在那里并且很高兴之后),谢谢您的查询!我有大约一百万个文档,因此将按照您的建议研究Corb2。我们在这里的查询末尾使用,xdmp:documentdelete($uri)。仍然不会删除原始版本?由于xdmp:document-delete(),原始版本将被删除。相关——请注意,我假设默认质量,并让MarkLogic决定使用哪个林。如果需要,调整。在非生产环境中测试。