CodamAIDocs
Themafertig

Alle Filteroperatoren

EQ, NEQ, LIKE, IN, ISNULL, ISNOTNULL, BEFORE, AFTER, SAMEORBEFORE, SAMEORAFTER, MEMBEROF: was jeder bedeutet, für welche Feldtypen er gilt und wie der Wert geschrieben wird.

Ausprägungen
EQNEQLIKEIN (kommagetrennter String)ISNULLISNOTNULLBEFOREAFTERSAMEORBEFORESAMEORAFTERMEMBEROFOperator passt nicht zum Feldtyp

Worum es geht

Ein Filter besteht aus drei Teilen:

{ "key": "amount", "value": "10", "param": "SAMEORAFTER" }
TeilBedeutung
keydas Feld, auch über Beziehungen wie company.companyname, siehe Pfade
valueder Vergleichswert, immer als Text, auch bei Zahlen und Datum
paramder Operator: wie verglichen wird. Fehlt er, gilt LIKE

Operatoren werden großgeschrieben. "eq" ist kein gültiger Operator.

Die Operatoren

Operatorliest sich alsSQL (vereinfacht)Beispiel
EQgleich={ "key": "city", "value": "Köln", "param": "EQ" }
NEQungleich<>{ "key": "status", "value": "CLOSED", "param": "NEQ" }
LIKEpasst auf MusterLIKE{ "key": "name", "value": "Muster%", "param": "LIKE" }
INeiner vonIN (…){ "key": "amount", "value": "5,10,15", "param": "IN" }
ISNULLhat keinen WertIS NULL{ "key": "note", "param": "ISNULL" }
ISNOTNULLhat einen WertIS NOT NULL{ "key": "note", "param": "ISNOTNULL" }
BEFOREkleiner als, vor<{ "key": "dueOn", "value": "2026-02-01", "param": "BEFORE" }
SAMEORBEFOREkleiner oder gleich<={ "key": "amount", "value": "10", "param": "SAMEORBEFORE" }
AFTERgrößer als, nach>{ "key": "amount", "value": "10", "param": "AFTER" }
SAMEORAFTERgrößer oder gleich>={ "key": "dueOn", "value": "2026-02-01", "param": "SAMEORAFTER" }
MEMBEROFListe enthältEXISTS (…){ "key": "employees", "value": "7f3…", "param": "MEMBEROF" }

BEFORE, AFTER und ihre SAMEOR…-Varianten heißen zwar nach der Zeit, gelten aber genauso für Zahlen.

Welcher Operator für welches Feld?

Operator × Feldtyp
TextGanzzahlKommazahlJa/NeinDatum, ZeitIDAufzählungListeOperator
jajajajajajaja–EQ, NEQ
janeinneinneinneinneinnein–LIKE
jajajajajajaja–IN
neinjajaneinjaneinnein–BEFORE, AFTER, SAMEORBEFORE, SAMEORAFTER
jajajajajajaja–ISNULL, ISNOTNULL
–––––––jaMEMBEROF

„Ganzzahl“ meint Felder vom Typ Integer und Long, „Kommazahl“ Felder vom Typ Double, Float und Decimal. „ID“ meint die id eines Objekts und Pfade wie company.id. ISNULL und ISNOTNULL funktionieren auch auf einer Einzelreferenz: { "key": "company", "param": "ISNULL" } findet alle Mitarbeiter ohne Firma.

Wie der Wert geschrieben wird

FeldtypSchreibweise von valueBeispiel
Textwie er ist"Köln"
GanzzahlZiffern"10"
Kommazahlmit Punkt"2.5"
Ja/Nein"true" oder "false" (Groß-/Kleinschreibung egal)"true", "false"
Datum, Zeitfestes Format"2026-02-10", "2026-02-10 08:00:00", siehe Datums- und Zeitwerte
IDUUID"7f3a…-…"
AufzählungName des Werts"OPEN"
INWerte mit Komma, ohne Leerzeichen"5,10,15"
ISNULL, ISNOTNULLkein Wert nötig–

Alle Operatoren im Ablauf

Beispiele am Modell preset (label, amount, ratio, active, dueOn, note)

Wann: genau ein Wert, oder alles außer einem Wert

{ "key": "amount", "value": "10", "param": "EQ" } findet alle mit amount 10. NEQ findet alle anderen, aber nicht die ohne Wert: Ein leeres Feld ist in SQL weder gleich noch ungleich.

Ergebnis: Exakter Vergleich.

Wann: Textsuche mit Platzhaltern

CDMS ergänzt kein %. Alles dazu unter Suchmuster mit LIKE.

Ergebnis: Nur für Textfelder.

Wann: einer von mehreren Werten

{ "key": "label", "value": "Alpha,Beta", "param": "IN" }. Die Werte werden am Komma getrennt, Leerzeichen gehören zum Wert: "Alpha, Beta" sucht nach „Alpha“ und „ Beta“ (mit Leerzeichen).

Ergebnis: Treffer, deren Wert in der Liste steht.

Wann: Zahlen- und Datumsbereiche

Für einen Bereich kombinierst du zwei Filter in einer UND-Gruppe, z. B. SAMEORAFTER 2026-01-01 und BEFORE 2026-02-01 für „im Januar“.

Ergebnis: Werte in diesem Bereich.

Wann: Feld leer oder gefüllt

value wird nicht gebraucht. { "key": "note", "param": "ISNULL" } findet alle ohne Notiz.

Ergebnis: Leer heißt null in der Datenbank. Ein leerer Text "" ist nicht null.

Wann: „welche Firmen haben diesen Mitarbeiter?“

Nur für Listenfelder. Eigene Seite: Sammlungen durchsuchen mit MEMBEROF.

Ergebnis: Objekte, deren Liste den Wert enthält.

Wenn Operator und Feld nicht zusammenpassen

Was passiert bei einem unpassenden Filter?
FallBeispielErgebnis
Vergleich auf Text oder Ja/Neinlabel BEFORE Beta400 unsupported-operator|label|BEFORE
unbekanntes Feldlable EQ Beta400 unknown-search-key|lable
unbekannter Aufzählungswert bei EQ/NEQtype EQ BOSS400 wrong-value-in-where|type|BOSS
Ja/Nein mit anderem Wortactive EQ yes400 wrong-value-in-where|active|yes
LIKE auf Zahlamount LIKE 1%400 like-needs-text|amount
Wert passt nicht zum Typamount EQ abc400 wrong-value-in-where|amount|abc
MEMBEROF auf Nicht-Listelabel MEMBEROF x400 memberof-needs-collection|label
Operator unbekannt oder kleingeschrieben"param": "eq"400 invalid-value|parameter.query.filter[0].param

Alle Fehlerfälle zusammen stehen unter Wenn ein Filter nicht passt.

Quellen im Code und in der Wissensdatenbank
  • CDMS/cdms-persistence-database – DatabaseConditionBuilder.buildWhereFilter, memberOf
  • CDMS/cdms-commons – SearchLogicOperations, ListSearchFilter
Suchen