marklogic mlcp自定义转换将聚合文档拆分为多个文件

jen*_*fer 5 javascript json marklogic mlcp

我有一个JSON"聚合"文件,我希望使用mlcp将多个文档拆分并摄取到MarkLogic中.

我想使用javascript在摄取过程中转换内容.

我的JSON文件看起来像这样:

{
  "type": "FeatureCollection",
  "features": [
    {blobA}, {blobB}, {blobC} ......
    ]
 }
Run Code Online (Sandbox Code Playgroud)

...我希望通过MLCP运行此文件,以便每个文档包含数组中的项目.

即一个文档将包含{blobA},另一个文档将包含{blobB},另一个文档将包含{blobC} ....等等.

如何编写自定义.sjs转换模块?

jen*_*fer 3

查看此处的示例: http ://docs.marklogic.com/guide/mlcp/import#id_26044

原始输入文档预计采用以下形式:

{ uri: string,
  value: node
}
Run Code Online (Sandbox Code Playgroud)

这也是每个文档的预期输出形式。您还希望返回的类型为文档节点,因为您希望 mlcp 将其拆分并将其摄取为 JSON 文档。

所以,你的 .sjs 自定义转换模块看起来像这样......

function splitFeatures(doc) {
  const features = doc.value.toObject().features;
  return xdmp.arrayValues(
    features.map(function(feature) {
      return {
        uri: '/path/itemhere-' + xdmp.random() + '.json',
        value: xdmp.toJSON(feature)
      }
    })
  );
}

exports.transform = splitFeatures;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,在 MarkLogic 中使用 JSON 时,这是一个有用的资源