इस गाइड में सूची फ़िल्टर सिंटैक्स और अलग-अलग तरह के संसाधनों को फ़िल्टर करने के तरीके के बारे में बताया गया है.
एपीआई के कुछ तरीके, रिस्पॉन्स में दिखाए गए रिसॉर्स को सीमित करने के लिए, फ़िल्टर को स्वीकार कर सकते हैं.
खास जानकारी
इस सेक्शन में, सूची फ़िल्टर के सिंटैक्स के बारे में खास जानकारी दी गई है.
फ़िल्टर,
expression
वाली स्ट्रिंग होती है.expression
, तुलनाओं का बूलियन कॉम्बिनेशन होता है:expression = ["NOT"] comparison { ("AND" | "OR") ["NOT"] comparison } expression = ( expression )
comparison
, वैल्यू वाले रिसॉर्स फ़ील्ड से मैच करता है. आप सभी आम कंपैरिज़न ऑपरेटर इस्तेमाल कर सकते हैं.comparison = name OP value OP = "<=" | "<" | ">=" | ">" | "!=" | "=" | ":"
has
ऑपरेटर, कोलन (:
) का इस्तेमाल स्ट्रिंग और दोहराए गए फ़ील्ड पर किया जा सकता है. जानकारी के लिए ऑपरेटर है सेक्शन देखें.फ़िल्टर में, इस तरह की वैल्यू का इस्तेमाल किया जा सकता है:
- संख्याएं
- स्ट्रिंग
- ब्रैकेट में रखे गए एक्सप्रेशन
value = number| string | "*" | "(" expression ")"
स्ट्रिंग ये चीज़ें दिखा सकती हैं:
- आर्बिट्रेरी टेक्स्ट
- बूलियन
- Enum की वैल्यू
- टाइमस्टैंप वाले हिस्सों में
बूलियन एक्सप्रेशन
expression = ["NOT"|"-"] comparison {["AND" | "OR"] ["NOT"|"-"] comparison}
कार्रवाइयां नीचे दिए गए क्रम में की जाती हैं:
NOT
OR
AND
उदाहरण के लिए, ये एक्सप्रेशन एक जैसे हैं:
a OR NOT b AND NOT c OR d
(a OR (NOT b)) AND ((NOT c) OR d)
तुलनाओं के बीच AND
ऑपरेटर को हटाया जा सकता है. उदाहरण के लिए, नीचे दिए गए फ़िल्टर एक जैसे
हैं:
c=d AND e=f
c=d e=f
NOT
की जगह, हाइफ़न (-
) का इस्तेमाल किया जा सकता है. हाइफ़न (-
) और नीचे दी गई तुलना के बीच खाली जगह नहीं होनी चाहिए. उदाहरण के लिए, नीचे दिए गए फ़िल्टर एक जैसे हैं:
NOT e=f
-e=f
तुलना
इस सेक्शन में, "name OP value"
तुलनाओं के बारे में कुछ इस तरह बताया गया है:
comparison = name OP value
जहां
OP = "<=" | "<" | ">=" | ">" | "!=" | "=" | ":"
name = identifier { "." identifier }
identifier = unquoted_text
value = number | string | "*" | "(" expression ")"
तुलना की बाईं ओर, एपीआई के संसाधन फ़ील्ड के पाथ का नाम होता है.
नाम में संसाधन आइडेंटिफ़ायर की एक सीरीज़ होती है, जिन्हें पीरियड (.
) के ज़रिए कनेक्ट किया जाता है.
हर फ़ील्ड आइडेंटिफ़ायर के बाद, उस फ़ील्ड के नाम का अगला लेवल होता है. उदाहरण के लिए, एक ऐसे रिसॉर्स पर विचार करें जिसमें एक कॉम्प्लेक्स फ़ील्ड item
हो, जिसमें एक और कॉम्प्लेक्स फ़ील्ड tool
हो. साथ ही, फ़ील्ड का नाम shape
हो. इस संसाधन के लिए फ़िल्टर में, आपको item.tool.shape
नाम का आकार दिखेगा.
आम तौर पर, दाईं ओर एक अदिश वैल्यू होती है, जिसे फ़ील्ड के टाइप में बदल दिया जाता है और उसकी तुलना की जाती है. ज़्यादा जानकारी के लिए, वैल्यू लिटरल टाइप सेक्शन देखें.
तुलना के दाईं ओर को भी लिटरल वैल्यू और/या बूलियन एक्सप्रेशन के ब्रैकेट वाले बूलियन कॉम्बिनेशन के तौर पर दिखाया जा सकता है, जिसमें सिर्फ़ लिटरल वैल्यू होती हैं (NOT
के साथ या उसके बिना). बाईं ओर का नाम और तुलना ऑपरेटर, हर वैल्यू पर लागू होता है. उदाहरण के लिए, नीचे दिए गए फ़िल्टर एक जैसे हैं:
deal.name = ("test 1" OR "test 2")
deal.name = "test 1" OR deal.name = "test 2"
यहां दो मिलते-जुलते फ़िल्टर का एक और ज़्यादा जटिल उदाहरण दिया गया है:
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")
वैल्यू लिटरल टाइप
कंपैरिज़न ऑपरेटर की दाईं ओर मौजूद वैल्यू को नंबर और स्ट्रिंग लिटरल में रखा जा सकता है.
नंबर
इस सेक्शन में न्यूमेरिक लिटरल वैल्यू दिखाने के बारे में बताया है.
Type | परिभाषा | उदाहरण |
---|---|---|
डबल-साइज़ बेड | ऐसी कोई भी संख्या जिसमें दशमलव बिंदु होता है और उसके बिना ("-") चिह्न होता है उसे डबल माना जाता है. |
|
Integer | ऐसी किसी भी संख्या को एक पूर्णांक माना जाता है जिसमें दशमलव चिह्न नहीं होता और बिना चिह्न ("-") होता है. |
|
String
इस सेक्शन में उन टाइप के बारे में बताया गया है जिन्हें फ़िल्टर सिंटैक्स में स्ट्रिंग लिटरल के तौर पर लिखा जा सकता है.
Type | परिभाषा | उदाहरण |
---|---|---|
बूलियन | अक्षर के किसी भी केस में TRUE या FALSE . |
|
Enum | इन्यूमिरेशन टाइप लिटरल का नाम. Enum केस-सेंसिटिव होते हैं. |
FINALIZED और Finalized एक जैसे नहीं हैं
|
String | ऐसी कोई भी स्ट्रिंग जिसमें कोड में UTF-8 कोड या 7-बिट ASCII टेक्स्ट मौजूद हो. एम्बेड किए गए कोटेशन मार्क को बैकस्लैश से एस्केप किया जाना चाहिए. स्ट्रिंग को खाली सफ़ेद जगह से बांटने के बाद, बिना कोट वाली स्ट्रिंग को सभी शब्दों में इंप्लिसिट `AND` माना जाता है. |
|
टाइमस्टैंप | ISO8601 स्टैंडर्ड फ़ॉर्मैट में एक स्ट्रिंग. |
"2014-10-02T15:01:23.045Z"
|
कंपैरिज़न ऑपरेटर
यहां कंपैरिज़न ऑपरेटर की जानकारी दी गई है:
- इससे कम या इसके बराबर है:
"<="
- इससे छोटी है:
"<"
- इससे बड़ा या बराबर है:
">="
- इससे बड़ा है:
">"
- इसके बराबर नहीं है:
"!="
- इसके बराबर:
"="
- इसमें शामिल है:
":"
ये ऑपरेटर, DoubleClick, Integer, बूलियन, Enum, और टाइमस्टैंप वैल्यू टाइप पर लागू होते हैं.
ऑपरेटर है
इन फ़ील्ड में खास कार्रवाइयों के लिए, HAS
ऑपरेटर (:
) का इस्तेमाल किया जा सकता है:
- सबस्ट्रिंग
- जब किसी स्ट्रिंग कॉलम की वैल्यू की तुलना स्ट्रिंग के तौर पर करने के लिए,
HAS
ऑपरेटर का इस्तेमाल किया जाता है, तो ऑपरेटर एक सबस्ट्रिंग ऑपरेशन के तौर पर काम करेगा. उदाहरण के लिए,name:"abcd"
उन सभी इंस्टेंस को दिखाता है जिनमेंname
,"abcd"
वाली स्ट्रिंग है. - मौजूदगी की जांच
- जब
HAS
ऑपरेटर को खास वर्ण*
के साथ इस्तेमाल किया जाता है, तोHAS
ऑपरेटर यह जांच करता है कि वैल्यू शून्य नहीं है. उदाहरण के लिए,name:*
उन सभी इंस्टेंस को दिखाता है जिनमेंname
शून्य, मौजूद नहीं है या तय नहीं है. - जब
HAS
ऑपरेटर को बिना स्ट्रिंग वाली वैल्यू के साथ इस्तेमाल किया जाता है, तो यहEQUALS
(=
) ऑपरेटर की तरह ही काम करता है. उदाहरण के लिए,isCompleted:true
ठीक उसी तरह काम करता है जैसेisCompleted = true
करता है. - दोहराए गए फ़ील्ड
दोहराए गए एपीआई के रिसॉर्स फ़ील्ड पर फ़िल्टर करने के लिए,
HAS
(:
) ऑपरेटर का इस्तेमाल किया जा सकता है. ऐसा तब तक किया जा सकता है, जब तक यहां दी गई शर्तें सही हैं:- फ़ील्ड आइडेंटिफ़ायर पाथ में सिर्फ़ एक कॉम्पोनेंट दोहराया गया है
- फ़ील्ड पाथ का आखिरी आइडेंटिफ़ायर, स्केलर टाइप है
नेस्ट किए गए दोहराए गए फ़ील्ड पर फ़िल्टर करने की सुविधा काम नहीं करती.
यहां एक उदाहरण दिया गया है:
item
मेंcolors
फ़ील्ड है, जिसमें"red"
,"blue"
, और"yellow"
जैसे स्ट्रिंग वैल्यू होती हैं.item.colors:("red")
,colors
फ़ील्ड में वे सभी आइटम दिखाता है जिनकी वैल्यू"red"
है.item.colors:("red" "yellow")
वे सभी आइटम दिखाता है जिनकेcolors
फ़ील्ड में"red"
और"yellow"
, दोनों मौजूद हैं.item.colors:("red" OR "yellow")
वे सभी आइटम दिखाता है जिनकेcolors
फ़ील्ड में"red"
या"yellow"
होता है.
item
में दोहराया गयाtools
फ़ील्ड भी है, जो एक स्केलर फ़ील्डshape
वाला एक जटिल ऑब्जेक्ट है. इसकी वैल्यू"square"
या"round"
हो सकती हैं.item.tools.shape:("square")
,"square"
आकार के टूल वाले सभी आइटम दिखाता है.item.tools.shape:("square" "round")
, वे सभी आइटम दिखाता है जिनमें"square"
शेप वाला टूल और"round"
शेप वाला टूल, दोनों मौजूद होते हैं.item.tools.shape:("square" OR "round")
, वे सभी आइटम दिखाता है जिनमें"square"
आकार टूल या"round"
आकार का टूल होता है.
नेस्ट किए गए फ़ील्ड में जानकारी नहीं भरी गई
नेस्ट किए गए फ़ील्ड, रूट-लेवल फ़ील्ड के सब-फ़ील्ड हैं. उदाहरण के लिए,
item.tools.shape
में मौजूद shape
, items.tools
का नेस्ट किया गया फ़ील्ड है.
रूट-लेवल के फ़ील्ड डिफ़ॉल्ट रूप से 'गलत' पर सेट होते हैं. नेस्ट किए गए फ़ील्ड में जानकारी अपने-आप नहीं भरी होती.
नेस्ट किए गए फ़ील्ड वाले ऑब्जेक्ट, नेगेटिव फ़िल्टर (!=
) से नहीं दिखते.
यहां एक उदाहरण दिया गया है:
item.tools
में size
Enum होता है, जिसकी वैल्यू "SMALL"
, "MEDIUM"
या "LARGE"
पर सेट की जा सकती है.
अगर आपके पास ये आइटम हैं:
{
"name": "item1",
"tools": {
"size": "MEDIUM"
}
},
{
"name": "item2",
"tools": {
"size": "LARGE"
}
},
{
"name": "item3"
}
नेगेटिव फ़िल्टर "tools.size != SMALL"
वाले items.list
को किए जाने पर,
ये नतीजे दिखते हैं:
{
"items": [
{
"name": "item1",
"tools": {
"size": "MEDIUM"
}
},
{
"name": "item2",
"tools": {
"size": "LARGE"
}
}
]
}
item.tools.size
को item3
के लिए सेट नहीं किया गया है, इसलिए नेगेटिव फ़िल्टर
item3
ऑब्जेक्ट नहीं दिखाता.
उदाहरण
उदाहरण | ब्यौरा |
---|---|
externalDealId = "123456789" |
externalDealId का, जिसकी स्ट्रिंग वैल्यू "123456789" है. |
advertiserId:93641 |
advertiserId की वैल्यू 93641 है. |
isSetupComplete = true |
isSetupComplete का मान TRUE के बराबर है. |
updateTime > "2018-02-14T11:09:19.378Z" |
updateTime , 14/02/2018 11:09:19.378 UTC के बाद का है |
displayName = "proposal" AND proposalRevision = 3 |
displayName स्ट्रिंग में "proposal" का एक जैसा वैल्यू है AND beginRevision 3 के बराबर है. |
displayName = "proposal" OR proposalRevision = 3 |
displayName में "proposal" का स्ट्रिंग वैल्यू है या प्रपोज़ल में बदलाव की वैल्यू तीन के बराबर है. |
NOT displayName = "proposal" |
displayName , "प्रस्ताव" के बराबर नहीं है. |
proposalState = (PROPOSED OR BUYER_ACCEPTED) |
proposalState का enum मान जो या तो PROPOSED या Buyer_COMMENT के बराबर है. |
proposalState = (PROPOSED AND BUYER_ACCEPTED) |
proposalState का Enum मान PROPOSED AND Buyer_DEADLINE के बराबर है |
dealName = Test Deal |
INVALID एक्सप्रेशन |
dealName = "Test Deal" |
dealName का मतलब "टेस्ट डील" के बराबर है. |
dealName = (Test Deal) |
dealName , "टेस्ट" के बराबर है और "डील" के बराबर है. |
dealName = ("Test1" OR "Test2") |
dealName , "Test1" के बराबर है या "Test2" के बराबर है. |
dealName:* |
dealName is not null. |
dealName:"test" |
dealName में "test" सबस्ट्रिंग शामिल है. |
dealName:("A B") |
dealName में "A B" सबस्ट्रिंग शामिल है. |
dealName:(A B) |
dealName में "A" सबस्ट्रिंग और "B" सबस्ट्रिंग है. |
dealName:("A" OR "B" AND "C") |
dealName में या तो "A" OR "B" सबस्ट्रिंग है और इसमें सबस्ट्रिंग "C" भी है |
dealName:("A B" C) |
dealName में "A B" सबस्ट्रिंग है. साथ ही, "C" सबस्ट्रिंग भी है. |
dealName:("A B" OR C D) |
dealName में या तो "A B" या "C" सबस्ट्रिंग है और उसमें सबस्ट्रिंग "D" भी है. |
dealName:(NOT "A" B) |
dealName में कोई सबस्ट्रिंग "A" नहीं है. साथ ही, उसमें "B" सबस्ट्रिंग भी है. |
dealName:(NOT "A" OR "B") |
dealName में कोई सबस्ट्रिंग "A" नहीं है या उसमें सबस्ट्रिंग "B" है. |