2016-04-08 27 views
5

我有一個JSON「聚合」文件,我想分割和攝入多個文件到MarkLogic使用mlcp。marklogic mlcp自定義變換拆分聚合文檔到多個文件

我想transform the content during ingestion using javascript

我的JSON文件看起來是這樣的:

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

...,我想,這樣每個文檔包含數組中的一個項目,以貫穿MLCP此文件。

即一個文檔將包含{blobA},另一個將包含{blobB},另一個將包含{blobC} ....等等。

如何編寫我的自定義.sjs轉換模塊?

回答

1

退房這裏的例子: http://docs.marklogic.com/guide/mlcp/import#id_26044

原始輸入文件預計將在下面的形式:

{ uri: string, 
 
    value: 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