2016-04-08 7 views
5

Ich habe eine JSON "Aggregat" -Datei, die ich aufteilen und als mehrere Dokumente in MarkLogic mit mlcp aufnehmen möchten.marklogic mlcp benutzerdefinierte Umwandlung Split-Aggregat Dokument in mehrere Dateien

Ich möchte transform the content during ingestion using javascript.

Meine JSON-Datei sieht etwa so aus:

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

... und ich möchte diese Datei durch MLKP laufen, so dass jedes Dokument ein Element im Array enthält.

, d. H. Ein Dokument enthält {blobA}, ein anderes enthält {blobB} und ein anderes enthält {blobC} .... und so weiter.

Wie schreibe ich mein benutzerdefiniertes .sjs Transformationsmodul?

Antwort

1

Schauen Sie sich das Beispiel hier: http://docs.marklogic.com/guide/mlcp/import#id_26044

Die Original-Eingabevorlage wird voraussichtlich in der folgenden Form sein:

{ uri: string, 
 
    value: node 
 
}

, die auch die zu erwartende Ausgabeform ist für jedes Dokument. Sie möchten auch, dass Ihre Rückgabe vom Typ document-node ist, da Sie möchten, dass mlcp sie aufteilt und als JSON-Dokumente aufnimmt.

So, Ihr .sjs benutzerdefinierte Transformationsmodul etwas wie folgt aussehen ....

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;

Als beiseite, dann ist dies ein useful resource when working with JSON in MarkLogic.