Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Adatok szűrése a GraphQL-ben (
A szűrés a nagy adathalmazokat csak a szükséges rekordokra szűkíti. A GraphQL-ben a Data API Builder (DAB) egy strukturált argumentumot filter támogat az entitáslekérdezéseken. Minden szűrő paraméteres SQL-hez áll össze a biztonság és a konzisztencia érdekében.
Megjegyzés:
A GraphQL-szűrés támogatja az összehasonlítást, a logikai, a sztringmintát, a tagságot és a null operátorokat.
A GraphQL-szűrők strukturált bemeneti objektumokat használnak: { fieldName: { operator: value } }.
A dátumoknak érvényes ISO 8601 UTC-sztringeknek kell lenniük.
Null értékű ellenőrzések használata isNull helyett eq null.
Gyors áttekintés
| Operator | Meaning |
|---|---|
eq |
egyenlő |
neq |
nem egyenlő |
gt |
nagyobb mint |
gte |
nagyobb vagy egyenlő |
lt |
kevesebb, mint |
lte |
kisebb vagy egyenlő |
and |
logikai ÉS |
or |
logikai VAGY |
contains |
részszűrési egyezés |
notContains |
nem részszűrési egyezés |
startsWith |
előtag egyezése |
endsWith |
utótagegyezés |
in |
tagság |
isNull |
null értékű ellenőrzés |
eq
Egyenlő. Olyan rekordokat ad vissza, ahol egy mező értéke pontosan egyezik a megadott literállal, vagy null értékű, ha a függvényt használja isNull.
Megjegyzés:
Dátum- vagy dátum/idő mezők szűrésekor használjon nem kvótált ISO 8601 UTC formátumot (yyyy-MM-ddTHH:mm:ssZ).
Az idézőjeles vagy OData-stílusú formátumok érvénytelenek.
- Rossz:
$filter=Date ge '2025-01-01' - Rossz:
$filter=Date ge datetime'2025-01-01' - Helyes:
$filter=Date ge 2025-01-01T00:00:00Z
Ebben a példában olyan könyveket kapunk, ahol a cím szerepel 'Dune', az elérhető jelző igaz, az ár 20, a közzétett dátum 2024. január 1. és az értékelés 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 }
}
}
Fogalmi 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
Nem egyenlő. Olyan rekordokat ad vissza, ahol egy mező értéke nem egyezik meg a literálértékkel, vagy nem null értékű, ha az össze isNull: falsevan adva.
Ebben a példában olyan könyveket kapunk, ahol a cím nem 'Foundation'szerepel, az elérhető jelző nem hamis, az ár nem nulla, a közzétett dátum nem 2023. december 31. és az értékelés nem 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 }
}
}
Fogalmi 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
Nagyobb, mint. Olyan rekordokat ad vissza, ahol egy mező értéke szigorúan magasabb a megadott literálnál.
Ebben a példában olyan könyveket kapunk, amelyek címe betűrendbe 'A'van rendezve, a rendelkezésre álló jelző igaz, az ár nagyobb, mint 10, a közzétett dátum pedig 2020. január 1. után van.
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 }
}
}
Fogalmi 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
Nagyobb vagy egyenlő. Olyan rekordokat ad vissza, ahol egy mező értéke nagyobb vagy egyenlő a megadott literálértéknél.
Ebben a példában olyan könyveket kapunk, amelyeknek a 'A' címe vagy későbbi, az elérhető jelző igaz, az ár legalább 10, a közzétett dátum pedig 2020. január 1-jén vagy azt követően van.
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 }
}
}
Fogalmi 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
Kevesebb, mint. Olyan rekordokat ad vissza, ahol egy mező értéke szigorúan alacsonyabb, mint a megadott literál.
Ebben a példában olyan könyveket kapunk, amelyeknek a címe korábban 'Z'rendezve van, a rendelkezésre álló jelző hamis, az ár kisebb, mint 50, a közzétett dátum pedig 2030. január 1. előtt van.
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 }
}
}
Fogalmi 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
Kisebb vagy egyenlő. Olyan rekordokat ad vissza, ahol egy mező értéke kisebb vagy egyenlő az adott literálénál.
Ebben a példában olyan könyveket kapunk, amelyeknek a címe előtt vagy azzal egyenlő 'Z', az elérhető jelző igaz, az ár 100 vagy kevesebb, a közzétett dátum pedig 2030. január 1-jén vagy azt megelőzően van.
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 }
}
}
Fogalmi 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
Logikai ÉS. Több olyan predikátumot egyesít, amelyeknek mind igaznak kell lenniük ahhoz, hogy egy rekord egyezzen.
Ebben a példában olyan könyveket kapunk, amelyek 30-nál kevesebbe kerülnek, és 2022. január 1. után jelentek meg.
query {
books(filter: {
and: [
{ available: { eq: true } }
{ price: { lt: 30 } }
{ publishedOn: { gt: "2022-01-01T00:00:00Z" } }
]
}) {
items { id title available price publishedOn }
}
}
Fogalmi SQL
SELECT id, title, available, price, publishedOn
FROM Books
WHERE available = 1
AND price < 30
AND publishedOn > '2022-01-01T00:00:00Z';
or
Logikai VAGY. Olyan rekordokat ad vissza, ahol a tömb legalább egy predikátuma igaz értéket ad vissza.
Ebben a példában olyan könyveket kapunk, amelyek nincsenek raktáron, vagy 50 felett vannak.
query {
books(filter: {
or: [
{ available: { eq: false } }
{ price: { gt: 50 } }
]
}) {
items { id title available price }
}
}
Fogalmi SQL
SELECT id, title, available, price
FROM Books
WHERE available = 0
OR price > 50;
contains
Részszűrési egyezés. Olyan rekordokat ad vissza, amelyekben a mező a megadott részszűrést tartalmazza (a kis- és nagybetűk érzékenysége az adatbázis rendezésétől függ).
Ebben a példában olyan könyveket kapunk, amelyeknek a címe tartalmazza a "Dűne" szót.
query {
books(filter: { title: { contains: "Dune" } }) {
items { id title }
}
}
Fogalmi SQL
SELECT id, title
FROM Books
WHERE title LIKE '%Dune%';
notContains
Negatív részszűrési egyezés. Olyan rekordokat ad vissza, amelyekben a mező nem tartalmazza a megadott részszűrést.
Ebben a példában olyan könyveket kapunk, amelyeknek a címe nem tartalmazza az "Útmutató" szöveget.
query {
books(filter: { title: { notContains: "Guide" } }) {
items { id title }
}
}
Fogalmi SQL
SELECT id, title
FROM Books
WHERE title NOT LIKE '%Guide%';
startsWith
Az előtag egyezik. Azokat a rekordokat adja vissza, ahol a mező a megadott sztringgel kezdődik.
Ebben a példában olyan könyveket kapunk, amelyeknek a címe "The" (A) címmel kezdődik.
query {
books(filter: { title: { startsWith: "The" } }) {
items { id title }
}
}
Fogalmi SQL
SELECT id, title
FROM Books
WHERE title LIKE 'The%';
endsWith
Utótag egyezik. Olyan rekordokat ad vissza, ahol a mező a megadott sztringgel végződik.
Ebben a példában olyan könyveket kapunk, amelyeknek a címe "Krónikák" lesz.
query {
books(filter: { title: { endsWith: "Chronicles" } }) {
items { id title }
}
}
Fogalmi SQL
SELECT id, title
FROM Books
WHERE title LIKE '%Chronicles';
in
Tagsági egyezés. Olyan rekordokat ad vissza, ahol a mező értéke szerepel a megadott listában.
Ebben a példában olyan könyveket kapunk, amelyek műfaja "SciFi" vagy "Fantasy".
query {
books(filter: { genre: { in: ["SciFi", "Fantasy"] } }) {
items { id title genre }
}
}
Fogalmi SQL
SELECT id, title, genre
FROM Books
WHERE genre IN ('SciFi', 'Fantasy');
isNull
Null értékű ellenőrzés. Olyan rekordokat ad vissza, amelyekben egy mező értéke null vagy nem null a logikai literáltól függően.
Ebben a példában olyan könyveket kapunk, ahol az értékelés null.
query {
books(filter: { rating: { isNull: true } }) {
items { id title rating }
}
}
Fogalmi SQL
SELECT id, title, rating
FROM Books
WHERE rating IS NULL;
Konfigurációs példa
{
"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" ]
}
}
}
}
}
Lásd még
| Concept | REST | GraphQL | Cél |
|---|---|---|---|
| Projection | $select | Elemek | Adja meg, hogy mely mezőket adja vissza |
| Filtering | $filter | szűrő | Sorok korlátozása feltétel szerint |
| Rendezés | $orderby | orderBy | Rendezési sorrend meghatározása |
| Oldalméret | $first | first | Az elemek számának korlátozása oldalanként |
| Folytatás | $after | után | Folytatás az utolsó oldalról kurzor használatával |
Megjegyzés:
A REST-kulcsszavak az OData-konvenciók követésével $kezdődnek.