MongoPostexecutor
Gruppe |
|
Funktion |
Dieser Postexecuter führt einen Upsert oder Delete auf einem MongoDB-Dokument aus. |
Konfigurationsdatei |
sample_mongo_postexecuter.properties |
Beschreibung
Dieser Postexecuter kann ein Dokument in eine MongoDB einfügen (Upsert-Operation) oder eines aus dieser löschen.
Dazu legen Sie in der Zielstruktur des Profils die grundlegenden Daten an und führen danach in Phase 5 die JsonCreationUnit aus, um ein JSON-Dokument zu erzeugen.
Anschließend muss der MongoPostexecutor ausgeführt werden. Dieser übernimmt die Kommunikation mit der MongoDB und erzeugt davor aus dem JSON-Dokument ein BSON-Dokument. Eine MongoDB speichert Datensätze als BSON-Dokumente. BSON ist eine binäre Darstellung von JSON-Dokumenten, enthält jedoch mehr Datentypen als JSON. Um diese Datentypen zu erzeugen bietet MongoDB bestimmte Methoden an, die Sie anstelle konkreter Werte in einem einzufügenden Dokument angeben können. Siehe dazu den Parameter Cast und das Beispiel unten.
Parameterbeschreibung
Parameter |
Beschreibung |
MongoDB-Alias |
Der Alias der angebundenen MongoDB-Datenbank. |
Operation |
Die Operation, die ausgeführt werden soll. Erlaubte Werte: Upsert, Delete. |
Collection |
Die Collection, in die das Dokument eingefügt werden soll. Hinweis: Eine Collection ist eine Gruppierung von MongoDB-Dokumenten und entspricht in etwa einer Tabelle in einer SQL-Datenbank. |
Cast |
Da die JsonCreationUnit nur "normales" JSON erzeugen kann, ist es nicht direkt möglich die in der MongoDB verwendbaren Methodenaufrufe syntaktisch korrekt darzustellen. Um dies möglich zu machen, kann man hier die Namen der Methoden angeben, die der Postexecuter im von der JsonCreationUnit erzeugten JSON-Dokument erkennt und daraus einen syntaktisch korrekten MongoDB-Aufruf erzeugt. Siehe Beispiel unten. |
Beispiel
Gehen wir von folgender Zielstruktur aus.
Im Feld _id tragen wir den Fixwert ObjectId() ein, im Feld Name den Fixwert Peter Hall und im Feld DateOfBirth verwenden wir folgende Funktionskette.
now()
create W3CDTF from date (a) for Target Timezone (b)
a Ergebnis: 1
b Wert: UTC
concat(a,b,c,d,e,f,g,h, [CR-support i])
a Wert: ISODate(
b Ergebnis: 2
c Wert: )
d Wert:
e Wert:
f Wert:
g Wert:
h Wert:
i Wert:
In Phase 5 verwenden wir die JsonCreationUnit mit Wert MyData für Parameter Start at node, um das vorübergehende JSON-Dokument zu erzeugen.
Danach führen wir ebenfalls in Phase 5 in der Nachbehandlung den MongoPostexecutor mit folgender Properties-Konfigurationsdatei aus.
MongoDB-Alias=_data
Operation=Upsert
Collection=demo
Cast=ISODate,ObjectId
Hier das ursprünglich von der JsonCreationUnit erzeugte Dokument.
{
"_id"
:
"ObjectId()"
,
"Name"
,
"Peter Hall"
,
"DateOfBirth"
:
"ISODate(2019-01-30T07:59:05Z)"
}
Folgend das vom Postexecuter tatsächlich eingefügte Dokument.
{
"_id"
:ObjectId(
"5c52a06c0bafb86b5e46ffec"
),
"Name"
,
"Peter Hall"
,
"DateOfBirth"
:ISODate(
"2019-01-30T07:59:05Z"
)}
Sie erzeugen also in einem Feld der Zielstruktur einen Methoden-Aufruf als normalen String. Die JsonCreationUnit setzt darum dann die doppelten Anführungszeichen und der Postexecuter entfernt diese wieder und setzt sie stattdessen um den Argumentswert der Methode.