根据原始目录结构动态设置集合名称

时间:2018-11-08 03:23:35

标签: marklogic

我想动态添加原始目录名称为 加载文件时收集。

假设具有以下文件:/home/sampledata/dir1/targetfile.xml 我希望targetfile.xml包含在以下集合中: “ home”,“ sampledata”,“ dir1”

在通过MLCP导入时,我们可以这样做吗? 如果有人可以分享通过脚本实现的替代方法,将不胜感激。

2 个答案:

答案 0 :(得分:1)

我建议使用MLCP转换。它最常用于在插入之前操纵内容,但是您也可以使用它来调整uri,集合等。

有关MLCP转换的一般详细信息,请参见:https://docs.marklogic.com/guide/mlcp/import#id_82518

有关变换输出选项的更多详细信息,请参阅:https://docs.marklogic.com/guide/mlcp/import#id_59764

HTH!

答案 1 :(得分:1)

您可以使用以下查询:

  let $dir-seprator := "/"
  for $uri in cts:uri-match("*")[fn:ends-with(.,'.xml')][1 to 10]
  let $collection := fn:substring-before($uri,fn:tokenize($uri,$dir-seprator)[fn:last()])
  return 
  xdmp:document-set-collections($uri,fn:tokenize($collection,$dir-seprator)[.!='']))