MongoPostexecutor

Konfigurationsdatei

sample_mongo_postexecuter.properties

Klassenname

com.ebd.hub.datawizard.postexec.MongoPostexecutor

Beschreibung


Dieser Postexecuter führt eine Operation auf einem MongoDB-Dokument aus.

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.

Collection

Die Collection. Hinweis: Eine Collection ist eine Gruppierung von MongoDB-Dokumenten und entspricht in etwa einer Tabelle in einer SQL-Datenbank.

Operation

Die Operation, die ausgeführt werden soll.

Upsert - Fügt ein neues Dokument ein, wenn nicht vorhanden. Ansonsten wird das bestehende Dokument komplett ersetzt.

Replace - Ersetzt das vorhandenes Dokument. Wenn es nicht vorhanden ist, erfolgt keine Änderung.

Update - Es werden nur die angegebenen/enthaltenen Felder des Dokuments ersetzt.

Insert - Neues Dokument einfügen.

Delete - Dokument löschen.

UpdateMany - Update von mehreren Dokumenten.

DeleteMany - Delete von mehreren Dokumenten.

Filter

Hiermit werden die Dokumente definiert, auf die die Änderungen angewendet werden sollen, z. B. bei UpdateMany und DeleteMany. Beispiel: {"status": "old"}

Will man sich auf alle Dokumente beziehen, wird {} verwendet.

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.


images/download/attachments/177912793/139-version-1-modificationdate-1726807744232-api-v2.png


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.

sample_mongo_postexecuter.properties
MongoDB-Alias=mongodb
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.