Delen via


Gegevens filteren in GraphQL (filter)

Door te filteren worden grote gegevenssets beperkt tot alleen de records die u nodig hebt. In GraphQL ondersteunt Data API Builder (DAB) een gestructureerd filter argument voor entiteitsquery's. Elk filter wordt gecompileerd naar geparameteriseerde SQL voor veiligheid en consistentie.

Opmerking

GraphQL-filtering ondersteunt vergelijkings-, logische, tekenreekspatroon-, lidmaatschaps- en null-operators. GraphQL-filters maken gebruik van gestructureerde invoerobjecten: { fieldName: { operator: value } }. Datums moeten geldige ISO 8601 UTC-tekenreeksen zijn. Null-controles gebruiken isNull in plaats van eq null.

Snelle blik

Operator Meaning
eq gelijk
neq niet gelijk
gt groter dan
gte groter dan of gelijk aan
lt kleiner dan
lte kleiner dan of gelijk aan
and logische AND
or logische OR
contains subtekenreeksovereenkomst
notContains geen subtekenreeksovereenkomst
startsWith overeenkomst met voorvoegsel
endsWith achtervoegselovereenkomst
in lidmaatschap
isNull null-controle

eq

Gelijk aan. Retourneert records waarbij de waarde van een veld exact overeenkomt met de opgegeven letterlijke waarde of null is als u deze gebruikt isNull.

Opmerking

Als u filtert op datum- of datum/tijd-velden, gebruikt u de ISO 8601 UTC-indeling (yyyy-MM-ddTHH:mm:ssZ). Notaties in aan citeren of OData-stijl zijn ongeldig.

  • Verkeerd: $filter=Date ge '2025-01-01'
  • Verkeerd: $filter=Date ge datetime'2025-01-01'
  • Juist: $filter=Date ge 2025-01-01T00:00:00Z

In dit voorbeeld krijgen we boeken met de titel 'Dune', de beschikbare vlag is waar, de prijs is 20, de gepubliceerde datum is 1 januari 2024 en de classificatie is null.

query {
  books(filter: {
    and: [
      { title: { eq: "Dune" } }
      { available: { eq: true } }
      { price: { eq: 20 } }
      { publishedOn: { eq: "2024-01-01T00:00:00Z" } }
      { rating: { isNull: true } }
    ]
  }) {
    items { id title available price publishedOn rating }
  }
}

Conceptuele SQL

SELECT id, title, available, price, publishedOn, rating
FROM Books
WHERE title = 'Dune'
  AND available = 1
  AND price = 20
  AND publishedOn = '2024-01-01T00:00:00Z'
  AND rating IS NULL;

neq

Niet gelijk aan. Retourneert records waarbij de waarde van een veld niet overeenkomt met de letterlijke waarde of niet null is in combinatie met isNull: false.

In dit voorbeeld krijgen we boeken met de titel niet 'Foundation', de beschikbare vlag is niet onwaar, de prijs is niet nul, de gepubliceerde datum is niet 31 december 2023 en de classificatie is niet null.

query {
  books(filter: {
    and: [
      { title: { neq: "Foundation" } }
      { available: { neq: false } }
      { price: { neq: 0 } }
      { publishedOn: { neq: "2023-12-31T00:00:00Z" } }
      { rating: { isNull: false } }
    ]
  }) {
    items { id title available price publishedOn rating }
  }
}

Conceptuele SQL

SELECT id, title, available, price, publishedOn, rating
FROM Books
WHERE title <> 'Foundation'
  AND available <> 0
  AND price <> 0
  AND publishedOn <> '2023-12-31T00:00:00Z'
  AND rating IS NOT NULL;

gt

Groter dan. Retourneert records waarbij de waarde van een veld strikt hoger is dan de opgegeven letterlijke waarde.

In dit voorbeeld krijgen we boeken waarvan de titel alfabetisch 'A'wordt gesorteerd, de beschikbare vlag waar is, de prijs groter is dan 10 en de gepubliceerde datum valt na 1 januari 2020.

query {
  books(filter: {
    and: [
      { title: { gt: "A" } }
      { available: { gt: false } }
      { price: { gt: 10 } }
      { publishedOn: { gt: "2020-01-01T00:00:00Z" } }
    ]
  }) {
    items { id title available price publishedOn }
  }
}

Conceptuele SQL

SELECT id, title, available, price, publishedOn
FROM Books
WHERE title > 'A'
  AND available > 0
  AND price > 10
  AND publishedOn > '2020-01-01T00:00:00Z';

gte

Groter dan of gelijk aan. Retourneert records waarbij de waarde van een veld hoger is dan of gelijk is aan de opgegeven letterlijke waarde.

In dit voorbeeld krijgen we boeken waarvan de titel of later is 'A' , de beschikbare vlag waar is, de prijs ten minste 10 is en de gepubliceerde datum op of na 1 januari 2020 is.

query {
  books(filter: {
    and: [
      { title: { gte: "A" } }
      { available: { gte: false } }
      { price: { gte: 10 } }
      { publishedOn: { gte: "2020-01-01T00:00:00Z" } }
    ]
  }) {
    items { id title available price publishedOn }
  }
}

Conceptuele SQL

SELECT id, title, available, price, publishedOn
FROM Books
WHERE title >= 'A'
  AND available >= 0
  AND price >= 10
  AND publishedOn >= '2020-01-01T00:00:00Z';

lt

Kleiner dan. Retourneert records waarbij de waarde van een veld strikt lager is dan de opgegeven letterlijke waarde.

In dit voorbeeld krijgen we boeken waarvan de titel eerder sorteert 'Z', de beschikbare vlag onwaar is, de prijs kleiner is dan 50 en de gepubliceerde datum valt vóór 1 januari 2030.

query {
  books(filter: {
    and: [
      { title: { lt: "Z" } }
      { available: { lt: true } }
      { price: { lt: 50 } }
      { publishedOn: { lt: "2030-01-01T00:00:00Z" } }
    ]
  }) {
    items { id title available price publishedOn }
  }
}

Conceptuele SQL

SELECT id, title, available, price, publishedOn
FROM Books
WHERE title < 'Z'
  AND available < 1
  AND price < 50
  AND publishedOn < '2030-01-01T00:00:00Z';

lte

Kleiner dan of gelijk aan. Retourneert records waarbij de waarde van een veld lager is dan of gelijk is aan de opgegeven letterlijke waarde.

In dit voorbeeld krijgen we boeken waarvan de titel vóór of gelijk is aan 'Z', de beschikbare vlag waar is, de prijs 100 of minder is en de gepubliceerde datum op of vóór 1 januari 2030 valt.

query {
  books(filter: {
    and: [
      { title: { lte: "Z" } }
      { available: { lte: true } }
      { price: { lte: 100 } }
      { publishedOn: { lte: "2030-01-01T00:00:00Z" } }
    ]
  }) {
    items { id title available price publishedOn }
  }
}

Conceptuele SQL

SELECT id, title, available, price, publishedOn
FROM Books
WHERE title <= 'Z'
  AND available <= 1
  AND price <= 100
  AND publishedOn <= '2030-01-01T00:00:00Z';

and

Logische AND. Combineert meerdere predicaten die allemaal waar moeten zijn voor een record die overeenkomt.

In dit voorbeeld krijgen we boeken die beschikbaar zijn, kosten minder dan 30 en zijn gepubliceerd na 1 januari 2022.

query {
  books(filter: {
    and: [
      { available: { eq: true } }
      { price: { lt: 30 } }
      { publishedOn: { gt: "2022-01-01T00:00:00Z" } }
    ]
  }) {
    items { id title available price publishedOn }
  }
}

Conceptuele SQL

SELECT id, title, available, price, publishedOn
FROM Books
WHERE available = 1
  AND price < 30
  AND publishedOn > '2022-01-01T00:00:00Z';

or

Logische OR. Retourneert records waarbij ten minste één predicaat in de matrix waar wordt geëvalueerd.

In dit voorbeeld krijgen we boeken die niet op voorraad zijn of hoger zijn dan 50.

query {
  books(filter: {
    or: [
      { available: { eq: false } }
      { price: { gt: 50 } }
    ]
  }) {
    items { id title available price }
  }
}

Conceptuele SQL

SELECT id, title, available, price
FROM Books
WHERE available = 0
   OR price > 50;

contains

Subtekenreeksovereenkomst. Retourneert records waarin het veld de opgegeven subtekenreeks bevat (hoofdlettergevoeligheid is afhankelijk van de sortering van de database).

In dit voorbeeld krijgen we boeken waarvan de titel het woord 'Dune' bevat.

query {
  books(filter: { title: { contains: "Dune" } }) {
    items { id title }
  }
}

Conceptuele SQL

SELECT id, title
FROM Books
WHERE title LIKE '%Dune%';

notContains

Negatieve subtekenreeksovereenkomst. Retourneert records waarin het veld niet de opgegeven subtekenreeks bevat.

In dit voorbeeld krijgen we boeken met de titel 'Gids' niet.

query {
  books(filter: { title: { notContains: "Guide" } }) {
    items { id title }
  }
}

Conceptuele SQL

SELECT id, title
FROM Books
WHERE title NOT LIKE '%Guide%';

startsWith

Overeenkomst met voorvoegsel. Retourneert records waar het veld begint met de opgegeven tekenreeks.

In dit voorbeeld krijgen we boeken waarvan de titel begint met 'The'.

query {
  books(filter: { title: { startsWith: "The" } }) {
    items { id title }
  }
}

Conceptuele SQL

SELECT id, title
FROM Books
WHERE title LIKE 'The%';

endsWith

Achtervoegselovereenkomst. Retourneert records waar het veld eindigt met de opgegeven tekenreeks.

In dit voorbeeld krijgen we boeken waarvan de titel eindigt op 'Chronicles'.

query {
  books(filter: { title: { endsWith: "Chronicles" } }) {
    items { id title }
  }
}

Conceptuele SQL

SELECT id, title
FROM Books
WHERE title LIKE '%Chronicles';

in

Lidmaatschapsovereenkomst. Retourneert records waarin de waarde van het veld bestaat in de opgegeven lijst.

In dit voorbeeld krijgen we boeken waarvan het genre 'SciFi' of 'Fantasy' is.

query {
  books(filter: { genre: { in: ["SciFi", "Fantasy"] } }) {
    items { id title genre }
  }
}

Conceptuele SQL

SELECT id, title, genre
FROM Books
WHERE genre IN ('SciFi', 'Fantasy');

isNull

Null-controle. Retourneert records waarbij de waarde van een veld null of niet null is, afhankelijk van de booleaanse letterlijke waarde.

In dit voorbeeld krijgen we boeken waarin de classificatie null is.

query {
  books(filter: { rating: { isNull: true } }) {
    items { id title rating }
  }
}

Conceptuele SQL

SELECT id, title, rating
FROM Books
WHERE rating IS NULL;

Voorbeeldconfiguratie

{
  "runtime": {
    "pagination": {
      "default-page-size": 100,
      "max-page-size": 100000
    }
  },
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.books"
      },
      "mappings": {
        "sku_title": "title",
        "sku_price": "price"
      },
      "relationships": {
        "book_category": {
          "cardinality": "one",
          "target.entity": "Category",
          "source.fields": [ "category_id" ],
          "target.fields": [ "id" ]
        }
      }
    },
    "Category": {
      "source": {
        "type": "table",
        "object": "dbo.categories"
      },
      "relationships": {
        "category_books": {
          "cardinality": "many",
          "target.entity": "Book",
          "source.fields": [ "id" ],
          "target.fields": [ "category_id" ]
        }
      }
    }
  }
}

Zie ook

Concept REST GraphQL Purpose
Projection $select Items Kiezen welke velden u wilt retourneren
Filtering $filter filteren Rijen beperken op voorwaarde
Sorteervolgorde $orderby orderBy De sorteervolgorde definiëren
Paginaformaat $first first Het aantal items per pagina beperken
Voortzetting $after na Doorgaan vanaf de laatste pagina met behulp van een cursor

Opmerking

REST-trefwoorden beginnen met $het volgen van OData-conventies.