CodamAIDocs
Themafertig

Filter in verschachtelten Listen

Wann ein parameter oben steht und wann innerhalb eines response-Eintrags, und was das für die Datenmenge bedeutet.

Ausprägungen
Filter auf die TrefferFilter auf eine Unterlistebeides zusammenUnterliste ohne limit

Worum es geht

In einer Suche kann ein parameter an zwei Stellen stehen. Beide sehen gleich aus, wirken aber auf ganz verschiedene Dinge:

{
  "response": [
    "companyname",
    {
      "field": "employees",
      "response": ["firstname"],
      "parameter": { "limit": 5, "order": [{ "field": "firstname", "order": "ASC" }] }
    }
  ],
  "parameter": {
    "query": { "type": "AND", "filter": [{ "key": "city", "value": "Köln", "param": "EQ" }] },
    "limit": 25
  }
}
Oben oder innen?
parameter oben
neben response
  • bestimmt, welche Firmen Treffer sind
  • hier: Firmen aus Köln, 25 pro Seite
  • liefert meta mit totalCount
parameter innen
im response-Eintrag employees
  • bestimmt, welche Mitarbeiter in der Liste jeder Firma stehen
  • hier: die ersten 5 nach Vornamen
  • entfernt keine Firma aus den Treffern
  • keine eigene meta

Die zwei Fragen auseinanderhalten

Was willst du?
FrageWohin gehört der Filter?
Firmen, die einen Mitarbeiter namens Meier habenoben, als Pfad employees.lastname oder mit MEMBEROF
alle Firmen, jeweils nur ihre Mitarbeiter namens Meierinnen, im parameter des Eintrags employees
Firmen mit einem Meier, und bei jeder nur die Meiersoben und innen, derselbe Filter an beiden Stellen

Filter oben über eine Liste: siehe Pfade und MEMBEROF.

Wie CDMS das ausführt

sequenceDiagram
    participant C as Client
    participant D as CDMS
    participant DB as Datenbank
    C->>D: POST /company/query
    D->>DB: Firmen mit parameter oben (Köln, limit 25)
    DB-->>D: 25 Firmen
    loop für jede Firma
        D->>DB: Mitarbeiter mit company.id = … UND parameter innen
        DB-->>D: bis zu 5 Mitarbeiter
    end
    D-->>C: 25 Firmen, jede mit ihrer Liste

Den Filter company.id = … auf die jeweilige Firma ergänzt CDMS selbst. Mehr zum Ablauf unter Referenzen und Listen ausbauen.

Die Rechnung „25 × 500“

Wie viele Mitarbeiter kommen zurück?

Wann: "parameter": { "limit": 5 } im Eintrag employees, oben limit 25

25 Firmen × höchstens 5 Mitarbeiter.

Ergebnis: höchstens 125 Mitarbeiter.

Wann: kein parameter im Eintrag, jede Firma hat 500 Mitarbeiter

25 Firmen × 500 Mitarbeiter, alle mit den angeforderten Feldern.

Ergebnis: 12 500 Mitarbeiter in einer Antwort.

Wann: kein limit oben, 2 000 Firmen, innen ohne limit

2 000 Firmen × 500 Mitarbeiter.

Ergebnis: 1 000 000 Mitarbeiter. Die Antwort wird sehr langsam oder scheitert.

Was der innere parameter kann

AngabeinnenHinweis
queryjawird mit UND an den Bezug zur Firma gehängt
orderjaReihenfolge der Liste
limitjapro Firma
pagejapro Firma, selten sinnvoll
metaneindie Liste ist ein einfaches Array ohne totalCount

Brauchst du die Anzahl der Mitarbeiter einer Firma, frag direkt POST /employee/query mit company.id = … und limit: 0, siehe Blättern und Trefferzahl.

Quellen im Code und in der Wissensdatenbank
  • CDMS/cdms-system-layer – AbstractLayer.recursiveQuery, fetchAndSetList
  • Probe gegen cdms-integrationtest (company, employee), 2026-09-21
Suchen