W tym przewodniku opisano składnię filtra listy i sposób filtrowania typów zasobów.
Niektóre metody interfejsu API akceptują filtr w celu ograniczenia zasobów zwracanych w .
Podsumowanie
W tej sekcji znajdziesz krótkie omówienie struktury składni filtra listy.
Filtr to ciąg znaków zawierający
expression
. Wartośćexpression
jest wartością logiczną kombinacja porównań:expression = ["NOT"] comparison { ("AND" | "OR") ["NOT"] comparison } expression = ( expression )
comparison
odpowiada polu zasobu z wartością. Możesz użyć wszystkich funkcji najczęściej używane operatory porównania.comparison = name OP value OP = "<=" | "<" | ">=" | ">" | "!=" | "=" | ":"
Operator
has
, dwukropek (:
), może być używany w ciągach znaków i powtórzone . Więcej informacji znajdziesz w sekcji Zawiera operator.W filtrach możesz używać tych typów wartości:
- Numbers
- Strings
- Wyrażenia w nawiasach
value = number| string | "*" | "(" expression ")"
Ciągi mogą zawierać takie wartości:
- Dowolny tekst
- Wartość logiczna
- Wartości typu enum
- Sygnatury czasowe
Wyrażenia logiczne
expression = ["NOT"|"-"] comparison {["AND" | "OR"] ["NOT"|"-"] comparison}
Operacje są wykonywane w tej kolejności:
NOT
OR
AND
Na przykład te wyrażenia są równoważne:
a OR NOT b AND NOT c OR d
(a OR (NOT b)) AND ((NOT c) OR d)
W porównaniach możesz pomijać operator AND
. Na przykład:
filtry są takie same:
c=d AND e=f
c=d e=f
Możesz użyć łącznika (-
) zamiast elementu NOT
. Parametr nie może
między łącznikiem (-
) a poniższym porównaniem. Na przykład parametr
te filtry są takie same:
NOT e=f
-e=f
Porównania
W tej sekcji znajdziesz kilka porównań funkcji "name OP value"
:
comparison = name OP value
gdzie
OP = "<=" | "<" | ">=" | ">" | "!=" | "=" | ":"
name = identifier { "." identifier }
identifier = unquoted_text
value = number | string | "*" | "(" expression ")"
Po lewej stronie porównania znajduje się nazwa ścieżki pola zasobu API.
Nazwa składa się z serii identyfikatorów zasobów połączonych kropką (.
).
Po każdym identyfikatorze pola występuje kolejny poziom nazw tego pola. Dla:
załóżmy, że zasób ma złożone pole item
, które ma też inne
złożone pole tool
, które zawiera pole o nazwie shape
. W filtrze dla tego
zasobu, należy określić kształt o nazwie item.tool.shape
.
Prawa strona jest zwykle wartością skalarną, która jest konwertowana na i porównywać je z nim. Zobacz typy literatów wartości. .
Prawa strona porównania może być również wyrażona za pomocą wartości logicznej w nawiasach
kombinacja wartości literałów lub wyrażeń logicznych, która zawiera tylko
wartości literału (poprzedzone ciągiem NOT
lub bez niego). Nazwa po lewej stronie oraz
do każdej wartości jest stosowany operator porównania. Na przykład parametr
te filtry są takie same:
deal.name = ("test 1" OR "test 2")
deal.name = "test 1" OR deal.name = "test 2"
Oto kolejny, bardziej złożony przykład dwóch równoważnych filtry:
deal.name = ("test 1" OR "test 2" AND (NOT "test3" OR "test4"))
(deal.name = "test 1" OR deal.name = "test 2") AND ( (NOT deal.name = "test3") OR deal.name = "test4")
Typy literału wartości
Wartość po prawej stronie operatora porównania można podzielić na Literały łańcuchowe.
Liczba
W tej sekcji opisano reprezentację literałów liczbowych.
Typ | Definicja | Przykłady |
---|---|---|
Liczba zmiennoprzecinkowa | Dowolna liczba zawierająca separator dziesiętny (ze znakiem „-”) lub bez niego. jest traktowany jako liczba zmiennoprzecinkowa. |
|
Liczba całkowita | Dowolna liczba bez kropki dziesiętnej (ze znakiem lub bez niego) („-”) jest traktowany jako liczba całkowita. |
|
Ciąg znaków
W tej sekcji opisano typy, które można zapisać jako literał ciągu znaków w funkcji składni filtra.
Typ | Definicja | Przykłady |
---|---|---|
Wartość logiczna | TRUE lub FALSE , bez względu na wielkość liter. |
|
Typ wyliczeniowy | Nazwa literału typu wyliczenia. W wyliczeniach wielkość liter ma znaczenie. |
FINALIZED to nie to samo co Finalized
|
Ciąg znaków | Dowolny ciąg znaków zawierający tekst zakodowany w UTF-8 lub 7-bitowy kod ASCII. Umieszczone cudzysłowy muszą być zastąpione ukośnikiem lewym. Ciągi bez cudzysłowu z odstępami są traktowane jako niejawne „ORAZ” między wszystkimi słowami po podzieleniu ciągu według odstępów. |
|
Sygnatura czasowa | Ciąg w standardowym formacie ISO8601. |
"2014-10-02T15:01:23.045Z"
|
Operatory porównania
Oto operatory porównania:
- Mniejsze lub równe:
"<="
- Mniejsze niż:
"<"
- Większe lub równe:
">="
- Większe niż:
">"
- Różne od:
"!="
- Równe:
"="
- Posiada:
":"
Te operatory mają zastosowanie do wartości liczbowych, liczb całkowitych, wartości logicznych, enum i sygnatury czasowej. .
Zawiera operatora
Operatora HAS
(:
) możesz używać do działań specjalnych na tych stronach:
pola:
- Podłańcuchy
- Gdy operator
HAS
porównuje wartości w kolumnie z ciągami znaków z wartościami w ciągu znaków, operator będzie działać jako operacja na podłańcuchu. Przykład:name:"abcd"
zwraca wszystkie wystąpienia, w którychname
to ciąg znaków zawierający"abcd"
- Sprawdzanie obecności
- Jeśli używasz operatora
HAS
ze znakiem specjalnym*
, operatorHAS
szuka wartości innych niż null. Przykład: Funkcjaname:*
zwraca wszystkie instancje, w których polename
nie ma wartości null, nie ma wartości ani nie jest zdefiniowane. .
- Gdy użyjesz operatora
HAS
z wartościami, które nie są ciągami znaków, działa on tak samo jak operatorEQUALS
(=
). Na przykładisCompleted:true
działa w tak samo jakisCompleted = true
. - Pola powtarzane
Możesz użyć operatora
HAS
(:
), aby przefiltrować powtórzony zasób interfejsu API o ile spełnione są te warunki:- Na ścieżce identyfikatora pola występuje tylko 1 powtórzony komponent
- Ostatni identyfikator ścieżki pola jest typu skalarnego
Filtrowanie według zagnieżdżonych pól powtarzanych nie jest obsługiwane.
Oto przykład:
item
ma polecolors
, które zawiera wartości ciągów znaków takie jak"red"
,"blue"
i"yellow"
.- Funkcja
item.colors:("red")
zwraca wszystkie elementy, które mają wartość"red"
wcolors
. item.colors:("red" "yellow")
zwraca wszystkie elementy, które mają zarówno"red"
, jak i"yellow"
w polucolors
.item.colors:("red" OR "yellow")
zwraca wszystkie elementy, które zawierają"red"
lub"yellow"
w polucolors
.
item
ma również powtarzające się poletools
, które jest obiektem złożonym ze wskaźnikiem skalarnym poleshape
, którego wartości mogą być"square"
lub"round"
.- Funkcja
item.tools.shape:("square")
zwraca wszystkie elementy, które mają kształt"square"
narzędzi. item.tools.shape:("square" "round")
zwraca wszystkie elementy, które mają zarówno narzędzie w kształcie"square"
i"round"
.item.tools.shape:("square" OR "round")
zwraca wszystkie elementy, które mają Narzędzie kształtu"square"
lub narzędzie w kształcie"round"
.
- Funkcja
Niewypełnione pola zagnieżdżone
Pola zagnieżdżone to pola podrzędne pól poziomu głównego, np. shape
w
item.tools.shape
to zagnieżdżone pole typu items.tools
.
Pola na poziomie głównym mają domyślnie wartość false (fałsz). Zagnieżdżone pola są domyślnie puste.
Obiekty z niewypełnionymi zagnieżdżonymi polami nie są zwracane przez wartości ujemne
filtry (!=
).
Oto przykład:
item.tools
ma wyliczenie size
, którego wartość można ustawić na "SMALL"
, "MEDIUM"
,
lub "LARGE"
.
Jeśli masz te elementy:
{
"name": "item1",
"tools": {
"size": "MEDIUM"
}
},
{
"name": "item2",
"tools": {
"size": "LARGE"
}
},
{
"name": "item3"
}
Wywołanie funkcji items.list
z filtrem negatywnym "tools.size != SMALL"
zwraca
następujące:
{
"items": [
{
"name": "item1",
"tools": {
"size": "MEDIUM"
}
},
{
"name": "item2",
"tools": {
"size": "LARGE"
}
}
]
}
Ponieważ filtr item.tools.size
nie został ustawiony dla wartości item3
, filtr ujemnych nie
zwraca obiekt item3
.
Przykłady
Przykład | Opis |
---|---|
externalDealId = "123456789" |
externalDealId , który ma wartość ciągu znaków „123456789”. |
advertiserId:93641 |
advertiserId o wartości całkowitej 93641. |
isSetupComplete = true |
isSetupComplete ma wartość TRUE. |
updateTime > "2018-02-14T11:09:19.378Z" |
updateTime jest późniejsza niż 14.02.2018 o 11:09:19.378 czasu UTC. |
displayName = "proposal" AND proposalRevision = 3 |
Ciąg tekstowy displayName ma identyczną wartość „oferta pakietowa” ORAZ zmiana oferty pakietowej ma wartość 3. |
displayName = "proposal" OR proposalRevision = 3 |
Pole displayName zawiera ciąg znaków „oferta pakietowa” LUB wersja oferty pakietowej ma wartość 3. |
NOT displayName = "proposal" |
displayName nie równa się „oferta pakietowa”. |
proposalState = (PROPOSED OR BUYER_ACCEPTED) |
proposalState ma wartość wyliczeniową równą PROPOSED lub BUYER_ACCEPTED. |
proposalState = (PROPOSED AND BUYER_ACCEPTED) |
proposalState ma wartość wyliczeniową równą PROPOSED oraz BUYER_ACCEPTED |
dealName = Test Deal |
Wyrażenie INVALID |
dealName = "Test Deal" |
dealName jest równa wartości „Umowa testowa”. |
dealName = (Test Deal) |
dealName jest równe „Test” oraz „Umowa”. |
dealName = ("Test1" OR "Test2") |
dealName ma wartość równą „Test1” lub „Test2”. |
dealName:* |
dealName is not null. |
dealName:"test" |
dealName zawiera podłańcuch „test”. |
dealName:("A B") |
dealName zawiera podłańcuch „A B”. |
dealName:(A B) |
dealName zawiera podłańcuch „A” i podłańcuch „B”. |
dealName:("A" OR "B" AND "C") |
dealName zawiera podłańcuch „A” LUB „B” ORAZ zawiera też podłańcuch "C" |
dealName:("A B" C) |
dealName zawiera podłańcuch „A B” oraz zawiera podłańcuch „C”. |
dealName:("A B" OR C D) |
dealName zawiera podłańcuch „A B” lub „C” i zawiera również podłańcuch „D”. |
dealName:(NOT "A" B) |
dealName nie zawiera podłańcucha „A” i zawiera podłańcuch „B”. |
dealName:(NOT "A" OR "B") |
dealName nie zawiera podłańcucha „A” lub zawiera podłańcuch „B”. |