2016-04-08 23 views
5

У меня есть «объединенный» файл JSON, который я хочу разделить и глотать как несколько документов в MarkLogic, используя mlcp.marklogic mlcp custom transform split aggregate document to multiple files

Я хочу transform the content during ingestion using javascript.

Мой файл JSON выглядит примерно так:

{ 
 
    "type": "FeatureCollection", 
 
    "features": [ 
 
    {blobA}, {blobB}, {blobC} ...... 
 
    ] 
 
}

... и я хочу, чтобы запустить этот файл через МЛКП так, что каждый документ содержит элемент в массиве.

1. Один документ будет содержать {blobA}, другой будет содержать {blobB}, а другой будет содержать {blobC} ... и так далее.

Как написать свой собственный модуль преобразования .sjs?

ответ

1

Заканчивать пример здесь: http://docs.marklogic.com/guide/mlcp/import#id_26044

оригинальный входной документ, как ожидается, будет в следующей форме:

{ uri: string, 
 
    value: node 
 
}

Это также ожидаемый выход форма каждый документ. Вы также захотите, чтобы ваше возвращение было типа document-node, так как вы хотите, чтобы 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;

Как и в сторону, это useful resource when working with JSON in MarkLogic.

Смежные вопросы