Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Filtrování dat v GraphQL (
Filtrování zužuje velké datové sady jenom na záznamy, které potřebujete. Tvůrce rozhraní DATA API (DAB) v GraphQL podporuje strukturovaný filter argument dotazů na entity. Každý filtr se zkompiluje do parametrizovaného SQL pro zajištění bezpečnosti a konzistence.
Poznámka:
Filtrování GraphQL podporuje porovnání, logický vzor, vzorec řetězce, členství a operátory null.
Filtry GraphQL používají strukturované vstupní objekty: { fieldName: { operator: value } }.
Kalendářní data musí být platná řetězce ISO 8601 UTC.
Hodnoty null se používají isNull místo eq null.
Rychlý přehled
| Operator | Meaning |
|---|---|
eq |
rovný |
neq |
není rovno |
gt |
větší než |
gte |
větší než nebo rovno |
lt |
méně než |
lte |
menší než nebo rovno |
and |
logický operátor AND |
or |
logický operátor OR |
contains |
Shoda podřetěžce |
notContains |
neodpovídá podřetěžci |
startsWith |
shoda předpony |
endsWith |
Shoda přípony |
in |
členství |
isNull |
Kontrola null |
eq
Rovná se. Vrátí záznamy, ve kterých hodnota pole přesně odpovídá zadanému literálu nebo má hodnotu null, pokud používáte isNull.
Poznámka:
Při filtrování podle polí data nebo data a času použijte necitovaný formát ISO 8601 UTC (yyyy-MM-ddTHH:mm:ssZ).
Formáty ve stylu quoted nebo OData jsou neplatné.
- Nesprávný:
$filter=Date ge '2025-01-01' - Nesprávný:
$filter=Date ge datetime'2025-01-01' - Správně:
$filter=Date ge 2025-01-01T00:00:00Z
V tomto příkladu získáváme knihy, kde je 'Dune'název , dostupný příznak je pravdivý, cena je 20, datum publikování je 1. ledna 2024 a hodnocení má hodnotu 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 }
}
}
Koncepční 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
Nerovná se. Vrátí záznamy, ve kterých hodnota pole neodpovídá literálu nebo není null v kombinaci s isNull: false.
V tomto příkladu dostáváme knihy, kde název není 'Foundation', dostupný příznak není false, cena není nula, datum publikování není 31. prosince 2023 a hodnocení nemá hodnotu 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 }
}
}
Koncepční 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
Větší než. Vrátí záznamy, ve kterých je hodnota pole přísně vyšší než zadaný literál.
V tomto příkladu dostáváme knihy, jejichž název seřadí abecedně po 'A', dostupný příznak je pravdivý, cena je větší než 10 a datum publikování je po 1. lednu 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 }
}
}
Koncepční 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
Větší než nebo rovno. Vrátí záznamy, ve kterých je hodnota pole vyšší nebo rovna danému literálu.
V tomto příkladu dostáváme knihy, jejichž název je 'A' nebo novější, dostupný příznak je pravdivý, cena je aspoň 10 a datum publikování je 1. ledna 2020 nebo po 1. lednu 2020.
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 }
}
}
Koncepční 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
Méně než. Vrátí záznamy, ve kterých je hodnota pole přísně nižší než daný literál.
V tomto příkladu dostáváme knihy, jejichž název seřadí před 'Z', dostupný příznak je false, cena je menší než 50 a datum publikování je před 1. lednem 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 }
}
}
Koncepční 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
Menší než nebo rovno. Vrátí záznamy, ve kterých je hodnota pole nižší nebo rovna danému literálu.
V tomto příkladu dostáváme knihy, jejichž nadpis seřadí před nebo rovnou 'Z', dostupný příznak je pravdivý, cena je 100 nebo méně a publikované datum je dne nebo před 1. lednem 2030.
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 }
}
}
Koncepční 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
Logický operátor AND. Kombinuje více predikátů, které musí být splněny pro záznam, aby se shodovaly.
V tomto příkladu dostáváme knihy, které jsou k dispozici, stojí méně než 30 a byly publikovány po 1. lednu 2022.
query {
books(filter: {
and: [
{ available: { eq: true } }
{ price: { lt: 30 } }
{ publishedOn: { gt: "2022-01-01T00:00:00Z" } }
]
}) {
items { id title available price publishedOn }
}
}
Koncepční SQL
SELECT id, title, available, price, publishedOn
FROM Books
WHERE available = 1
AND price < 30
AND publishedOn > '2022-01-01T00:00:00Z';
or
Logický operátor OR. Vrátí záznamy, ve kterých se v poli vyhodnotí alespoň jeden predikát.
V tomto příkladu dostáváme knihy, které jsou buď z zásob, nebo jsou ceny vyšší než 50.
query {
books(filter: {
or: [
{ available: { eq: false } }
{ price: { gt: 50 } }
]
}) {
items { id title available price }
}
}
Koncepční SQL
SELECT id, title, available, price
FROM Books
WHERE available = 0
OR price > 50;
contains
Shoda podřetětěce. Vrátí záznamy, ve kterých pole obsahuje zadaný podřetětěr (citlivost písmen závisí na kolaci databáze).
V tomto příkladu dostáváme knihy, jejichž název obsahuje slovo "Dune".
query {
books(filter: { title: { contains: "Dune" } }) {
items { id title }
}
}
Koncepční SQL
SELECT id, title
FROM Books
WHERE title LIKE '%Dune%';
notContains
Shoda s negativním podřetěscem. Vrátí záznamy, ve kterých pole neobsahuje zadaný podřetěr.
V tomto příkladu dostáváme knihy, jejichž název neobsahuje "Průvodce".
query {
books(filter: { title: { notContains: "Guide" } }) {
items { id title }
}
}
Koncepční SQL
SELECT id, title
FROM Books
WHERE title NOT LIKE '%Guide%';
startsWith
Shoda předpony Vrátí záznamy, ve kterých pole začíná zadaným řetězcem.
V tomto příkladu dostáváme knihy, jejichž název začíná na "The".
query {
books(filter: { title: { startsWith: "The" } }) {
items { id title }
}
}
Koncepční SQL
SELECT id, title
FROM Books
WHERE title LIKE 'The%';
endsWith
Shoda přípony Vrátí záznamy, kde pole končí zadaným řetězcem.
V tomto příkladu dostáváme knihy, jejichž název končí "Chronicles".
query {
books(filter: { title: { endsWith: "Chronicles" } }) {
items { id title }
}
}
Koncepční SQL
SELECT id, title
FROM Books
WHERE title LIKE '%Chronicles';
in
Shoda členství. Vrátí záznamy, ve kterých v zadaném seznamu existuje hodnota pole.
V tomto příkladu dostáváme knihy, jejichž žánr je "SciFi" nebo "Fantasy".
query {
books(filter: { genre: { in: ["SciFi", "Fantasy"] } }) {
items { id title genre }
}
}
Koncepční SQL
SELECT id, title, genre
FROM Books
WHERE genre IN ('SciFi', 'Fantasy');
isNull
Kontrola hodnoty Null. Vrátí záznamy, ve kterých je hodnota pole null nebo ne null v závislosti na logickém literálu.
V tomto příkladu dostáváme knihy, ve kterých má hodnocení hodnotu null.
query {
books(filter: { rating: { isNull: true } }) {
items { id title rating }
}
}
Koncepční SQL
SELECT id, title, rating
FROM Books
WHERE rating IS NULL;
Příklad konfigurace
{
"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" ]
}
}
}
}
}
Viz také
| Koncepce | REST | GraphQL | Účel |
|---|---|---|---|
| Projection | $select | items | Výběr polí, která se mají vrátit |
| Filtering | $filter | filtr | Omezení řádků podle podmínky |
| Řazení | $orderby | orderBy | Definování pořadí řazení |
| Velikost stránky | $first | first | Omezení počtu položek na stránku |
| Pokračování | $after | po | Pokračovat z poslední stránky pomocí kurzoru |
Poznámka:
Klíčová slova REST začínají následujícími konvencemi $OData.