Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Filtro dei dati in GraphQL (
Il filtro restringe i set di dati di grandi dimensioni solo ai record necessari. In GraphQL Il generatore di API dati supporta un argomento strutturato filter nelle query di entità. Ogni filtro viene compilato in SQL con parametri per garantire sicurezza e coerenza.
Annotazioni
Il filtro GraphQL supporta operatori di confronto, logica, modello di stringa, appartenenza e null.
I filtri GraphQL usano oggetti di input strutturati: { fieldName: { operator: value } }.
Le date devono essere stringhe UTC ISO 8601 valide.
I controlli Null usano isNull anziché eq null.
Sguardo rapido
| Operator | Meaning |
|---|---|
eq |
uguale |
neq |
diverso da |
gt |
maggiore di |
gte |
maggiore o uguale a |
lt |
minore di |
lte |
minore o uguale a |
and |
AND logico |
or |
OR logico |
contains |
corrispondenza di sottostringa |
notContains |
non corrispondenza di sottostringa |
startsWith |
corrispondenza prefisso |
endsWith |
corrispondenza suffisso |
in |
Iscrizione |
isNull |
controllo null |
eq
Uguale a. Restituisce i record in cui il valore di un campo corrisponde esattamente al valore letterale specificato o è Null se si usa isNull.
Annotazioni
Quando si filtrano in base ai campi date o datetime, usare il formato UTC ISO 8601 senza virgO (yyyy-MM-ddTHH:mm:ssZ).
I formati tra virgolette o di tipo OData non sono validi.
- Errato:
$filter=Date ge '2025-01-01' - Errato:
$filter=Date ge datetime'2025-01-01' - Risposta esatta:
$filter=Date ge 2025-01-01T00:00:00Z
In questo esempio si ottengono libri in cui il titolo è 'Dune', il flag disponibile è true, il prezzo è 20, la data di pubblicazione è il 1° gennaio 2024 e la classificazione è 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 }
}
}
SQL concettuale
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
Non uguale a. Restituisce i record in cui il valore di un campo non corrisponde al valore letterale o non è Null se combinato con isNull: false.
In questo esempio si ottengono libri in cui il titolo non 'Foundation'è , il flag disponibile non è false, il prezzo non è zero, la data di pubblicazione non è il 31 dicembre 2023 e la classificazione non è 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 }
}
}
SQL concettuale
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
Maggiore. Restituisce i record in cui il valore di un campo è rigorosamente superiore al valore letterale specificato.
In questo esempio si ottengono libri il cui titolo viene ordinato alfabeticamente dopo 'A', il flag disponibile è true, il prezzo è maggiore di 10 e la data di pubblicazione è successiva al 1° gennaio 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 }
}
}
SQL concettuale
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
Maggiore o uguale a. Restituisce i record in cui il valore di un campo è maggiore o uguale al valore letterale specificato.
In questo esempio si ottengono libri il cui titolo è 'A' o versione successiva, il flag disponibile è true, il prezzo è almeno 10 e la data di pubblicazione è il 1° gennaio 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 }
}
}
SQL concettuale
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
Meno di. Restituisce i record in cui il valore di un campo è rigorosamente inferiore al valore letterale specificato.
In questo esempio si ottengono libri il cui titolo viene ordinato prima 'Z'di , il flag disponibile è false, il prezzo è minore di 50 e la data di pubblicazione è precedente al 1° gennaio 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 }
}
}
SQL concettuale
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
Minore o uguale a. Restituisce i record in cui il valore di un campo è inferiore o uguale al valore letterale specificato.
In questo esempio si ottengono libri il cui titolo viene ordinato prima o uguale a 'Z', il flag disponibile è true, il prezzo è 100 o minore e la data di pubblicazione è il 1° gennaio 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 }
}
}
SQL concettuale
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
AND logico. Combina più predicati che devono essere tutti true affinché un record corrisponda.
In questo esempio si ottengono libri disponibili, costano meno di 30 e sono stati pubblicati dopo il 1° gennaio 2022.
query {
books(filter: {
and: [
{ available: { eq: true } }
{ price: { lt: 30 } }
{ publishedOn: { gt: "2022-01-01T00:00:00Z" } }
]
}) {
items { id title available price publishedOn }
}
}
SQL concettuale
SELECT id, title, available, price, publishedOn
FROM Books
WHERE available = 1
AND price < 30
AND publishedOn > '2022-01-01T00:00:00Z';
or
OR logico. Restituisce i record in cui almeno un predicato nella matrice restituisce true.
In questo esempio si ottengono libri che sono esauriti o hanno un prezzo superiore a 50.
query {
books(filter: {
or: [
{ available: { eq: false } }
{ price: { gt: 50 } }
]
}) {
items { id title available price }
}
}
SQL concettuale
SELECT id, title, available, price
FROM Books
WHERE available = 0
OR price > 50;
contains
Corrispondenza di sottostringa. Restituisce i record in cui il campo contiene la sottostringa fornita( la distinzione tra maiuscole e minuscole dipende dalle regole di confronto del database).
In questo esempio si ottengono libri il cui titolo include la parola "Dune".
query {
books(filter: { title: { contains: "Dune" } }) {
items { id title }
}
}
SQL concettuale
SELECT id, title
FROM Books
WHERE title LIKE '%Dune%';
notContains
Corrispondenza di sottostringa negativa. Restituisce i record in cui il campo non contiene la sottostringa specificata.
In questo esempio si ottengono libri il cui titolo non include "Guide".
query {
books(filter: { title: { notContains: "Guide" } }) {
items { id title }
}
}
SQL concettuale
SELECT id, title
FROM Books
WHERE title NOT LIKE '%Guide%';
startsWith
Corrispondenza del prefisso. Restituisce i record in cui il campo inizia con la stringa specificata.
In questo esempio si ottengono libri il cui titolo inizia con "The".
query {
books(filter: { title: { startsWith: "The" } }) {
items { id title }
}
}
SQL concettuale
SELECT id, title
FROM Books
WHERE title LIKE 'The%';
endsWith
Corrispondenza del suffisso. Restituisce i record in cui il campo termina con la stringa specificata.
In questo esempio si ottengono libri il cui titolo termina con "Cronache".
query {
books(filter: { title: { endsWith: "Chronicles" } }) {
items { id title }
}
}
SQL concettuale
SELECT id, title
FROM Books
WHERE title LIKE '%Chronicles';
in
Corrispondenza di appartenenza. Restituisce i record in cui il valore del campo esiste nell'elenco fornito.
In questo esempio si ottengono libri il cui genere è "SciFi" o "Fantasy".
query {
books(filter: { genre: { in: ["SciFi", "Fantasy"] } }) {
items { id title genre }
}
}
SQL concettuale
SELECT id, title, genre
FROM Books
WHERE genre IN ('SciFi', 'Fantasy');
isNull
Controllo Null. Restituisce i record in cui il valore di un campo è null o non null a seconda del valore letterale booleano.
In questo esempio si ottengono libri in cui la classificazione è null.
query {
books(filter: { rating: { isNull: true } }) {
items { id title rating }
}
}
SQL concettuale
SELECT id, title, rating
FROM Books
WHERE rating IS NULL;
Configurazione di esempio
{
"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" ]
}
}
}
}
}
Vedere anche
| Concetto | REST | GraphQL | Scopo |
|---|---|---|---|
| Projection | $select | Elementi | Scegliere i campi da restituire |
| Filtraggio | $filter | filtro | Limitare le righe per condizione |
| Ordinamento | $orderby | orderBy | Definire l'ordinamento |
| Dimensioni pagina | $first | primo | Limitare il numero di elementi per pagina |
| Continuazione | $after | dopo | Continuare dall'ultima pagina usando un cursore |
Annotazioni
Le parole chiave REST iniziano con $, seguendo le convenzioni OData.