फ़िल्टर सिंटैक्स और उसके इस्तेमाल की सूची बनाना

इस गाइड में लिस्ट फ़िल्टर सिंटैक्स और कई संसाधन प्रकार.

एपीआई के कुछ तरीके, एक फ़िल्टर को स्वीकार कर सकते हैं, ताकि जवाब.

खास जानकारी

इस सेक्शन में, लिस्ट फ़िल्टर सिंटैक्स के स्ट्रक्चर के बारे में खास जानकारी दी गई है.

  • फ़िल्टर expression वाली स्ट्रिंग होती है. expression एक बूलियन होता है तुलनाओं का संयोजन:

    expression = ["NOT"] comparison { ("AND" | "OR") ["NOT"] comparison }
    expression = ( expression )
    
  • comparison, वैल्यू वाले रिसॉर्स फ़ील्ड से मैच करता है. सभी सोर्स का इस्तेमाल करें सामान्य कंपैरिज़न ऑपरेटर का इस्तेमाल करते हैं.

    comparison = name OP value
    OP = "<=" | "<" | ">=" | ">"  | "!=" | "=" | ":"
    

    स्ट्रिंग पर has ऑपरेटर, कोलन (:) का इस्तेमाल किया जा सकता है और इसे दोहराया जा सकता है फ़ील्ड. जानकारी के लिए, ऑपरेटर है सेक्शन देखें.

  • फ़िल्टर में इस तरह की वैल्यू का इस्तेमाल किया जा सकता है:

    • Numbers
    • स्ट्रिंग
    • ब्रैकेट वाले एक्सप्रेशन
    value = number| string | "*" | "(" expression ")"
    
  • स्ट्रिंग से यह जानकारी मिल सकती है:

    • आर्बिट्रेरी टेक्स्ट
    • बूलियन
    • Enum वैल्यू
    • टाइमस्टैंप

बूलियन एक्सप्रेशन

expression = ["NOT"|"-"] comparison {["AND" | "OR"] ["NOT"|"-"] comparison}

कार्रवाइयां नीचे दिए गए क्रम में की जाती हैं:

  1. NOT
  2. OR
  3. 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")

वैल्यू लिटरल टाइप

तुलना करने वाले ऑपरेटर की दाईं ओर मौजूद वैल्यू को अलग-अलग कैटगरी में बांटा जा सकता है: स्ट्रिंग की लिटरल वैल्यू.

नंबर

इस सेक्शन में, न्यूमेरिक (संख्या वाली) लिटरल वैल्यू को दिखाने के बारे में बताया गया है.

टाइप परिभाषा उदाहरण
डबल कोई भी संख्या जिसमें दशमलव बिंदु होता हो. जैसे, निशान ("-") के साथ या उसके बिना को डबल माना जाता है.
  • 1234.567
  • -789.0123
पूर्णांक ऐसा कोई भी नंबर जिसमें निशान के साथ या उसके बिना दशमलव बिंदु न हो ("-") को पूर्णांक माना जाता है.
  • 1234
  • -789

स्ट्रिंग

यह सेक्शन उन टाइप के बारे में बताता है जिन्हें आप फ़िल्टर सिंटैक्स.

टाइप परिभाषा उदाहरण
बूलियन किसी भी अक्षर वाले केस में TRUE या FALSE.
  • TRUE
  • True
  • "true"
Enum गिनती के टाइप की लिटरल वैल्यू. Enum, केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होते हैं. FINALIZED और Finalized अलग-अलग हैं
स्ट्रिंग ऐसी कोई भी स्ट्रिंग जिसमें UTF-8 कोड में बदला गया या 7-बिट ASCII टेक्स्ट हो. एम्बेड किए गए कोटेशन मार्क को बैकस्लैश से एस्केप किया जाना चाहिए. खाली सफ़ेद जगह वाली बिना कोट वाली स्ट्रिंग को इंप्लिसिट `AND` माना जाता है स्ट्रिंग को खाली सफ़ेद जगह से बांटने के बाद, सभी शब्दों के बीच में.
  • name = "test \"double quotes\""
  • name=(ABC DEF),
    name=ABC AND name=DEF के बराबर है
टाइमस्टैंप ISO8601 स्टैंडर्ड फ़ॉर्मैट में एक स्ट्रिंग. "2014-10-02T15:01:23.045Z"

तुलना करने वाले ऑपरेटर

यहां कंपैरिज़न ऑपरेटर की जानकारी दी गई है:

  • इससे छोटी या इसके बराबर है: "<="
  • इससे कम है: "<"
  • इससे ज़्यादा या इसके बराबर: ">="
  • इससे ज़्यादा: ">"
  • इसके बराबर नहीं है: "!="
  • इसके बराबर: "="
  • जिनमें ये शामिल हैं: ":"

ये ऑपरेटर दोगुने, पूर्णांक, बूलियन, Enum, और टाइमस्टैंप वैल्यू पर लागू होते हैं प्रकार.

ऑपरेटर है

इन देशों/इलाकों में खास कार्रवाइयों के लिए, HAS ऑपरेटर (:) का इस्तेमाल किया जा सकता है फ़ील्ड:

सबस्ट्रिंग
जब HAS ऑपरेटर का इस्तेमाल किसी स्ट्रिंग कॉलम में मौजूद मानों की तुलना स्ट्रिंग में, ऑपरेटर एक सबस्ट्रिंग के तौर पर काम करेगा. उदाहरण के लिए, name:"abcd" उन सभी इंस्टेंस की वैल्यू दिखाता है जिनमें name वाली स्ट्रिंग में शामिल है "abcd".
मौजूदगी की जांच
जब खास वर्ण * के साथ HAS ऑपरेटर का इस्तेमाल किया जाता है, तो HAS ऑपरेटर, ऐसी वैल्यू की जांच करता है जो शून्य नहीं हैं. उदाहरण के लिए, name:* उन सभी इंस्टेंस की वैल्यू दिखाता है जिनमें name शून्य, मौजूद नहीं या तय नहीं है.
नॉन-स्ट्रिंग वैल्यू के साथ HAS ऑपरेटर का इस्तेमाल करने पर, वह इस तरह काम करता है EQUALS (=) ऑपरेटर. उदाहरण के लिए, isCompleted:true इसमें काम करता है: isCompleted = true की तरह.
दोहराए गए फ़ील्ड

दोहराए गए एपीआई रिसॉर्स को फ़िल्टर करने के लिए, HAS (:) ऑपरेटर का इस्तेमाल किया जा सकता है फ़ील्ड होने पर, आपको इन बातों का ध्यान रखना चाहिए:

  1. फ़ील्ड आइडेंटिफ़ायर पाथ पर दोहराया गया सिर्फ़ एक कॉम्पोनेंट है
  2. फ़ील्ड पाथ का आखिरी आइडेंटिफ़ायर, अदिश टाइप का है

नेस्ट किए गए दोहराए गए फ़ील्ड पर फ़िल्टर करने की सुविधा काम नहीं करती.

यहां एक उदाहरण दिया गया है:

item में एक colors फ़ील्ड है, जिसमें "red", "blue" और "yellow".

  • item.colors:("red") वे सभी आइटम लौटाता है जिनका मान "red" colors फ़ील्ड.
  • item.colors:("red" "yellow") वे सभी आइटम लौटाता है जिनमें "red" और दोनों होते हैं colors फ़ील्ड में "yellow".
  • item.colors:("red" OR "yellow") वे सभी आइटम लौटाता है जिनमें "red" या colors फ़ील्ड में "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" के आकार का टूल.

नेस्ट किए गए ऐसे फ़ील्ड जिनमें जानकारी नहीं भरी गई है

नेस्ट किए गए फ़ील्ड, रूट-लेवल फ़ील्ड के सब-फ़ील्ड होते हैं. उदाहरण के लिए, shape item.tools.shape, items.tools का नेस्ट किया गया फ़ील्ड है.

रूट-लेवल फ़ील्ड डिफ़ॉल्ट रूप से गलत पर सेट होते हैं. नेस्ट किए गए फ़ील्ड में, डिफ़ॉल्ट रूप से जानकारी अपने-आप नहीं भरी जाती.

जिन ऑब्जेक्ट में नेस्ट किए गए फ़ील्ड नहीं भरे गए हैं वे नेगेटिव वैल्यू से नहीं लौटाए जाते हैं फ़िल्टर (!=).

यहां एक उदाहरण दिया गया है:

item.tools की एक size ईनम है, जिसका मान "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
advertiserId, जिसकी वैल्यू 93641 है.
isSetupComplete = true

isSetupComplete:TRUE

isSetupComplete = (True)
isSetupComplete, TRUE के बराबर है.
updateTime > "2018-02-14T11:09:19.378Z" updateTime, 14/02/2018 को 11:09:19.378 यूटीसी के बाद का है
displayName = "proposal" AND proposalRevision = 3

displayName = "proposal" proposalRevision = 3
displayName स्ट्रिंग में "प्रपोज़ल" की वैल्यू एक जैसी है और प्रस्ताव संशोधन 3 के बराबर है.
displayName = "proposal" OR proposalRevision = 3 displayName में "प्रपोज़ल" का स्ट्रिंग वैल्यू है या प्रस्ताव संशोधन 3 के बराबर है.
NOT displayName = "proposal"

displayName != "proposal"
displayName, "प्रपोज़ल" के बराबर नहीं है.
proposalState = (PROPOSED OR BUYER_ACCEPTED)

proposalState = PROPOSED OR proposalState = BUYER_ACCEPTED
proposalState की एक enum वैल्यू है, जो या तो PROPOSED या Purchases_ आधारित के बराबर है.
proposalState = (PROPOSED AND BUYER_ACCEPTED)

proposalState = (PROPOSED BUYER_ACCEPTED)

proposalState = PROPOSED AND proposalState = BUYER_ACCEPTED

proposalState = PROPOSED proposalState = BUYER_ACCEPTED
proposalState की enum वैल्यू, PROPOSED AND Purchases_ संग्रह के बराबर है
dealName = Test Deal INVALID एक्सप्रेशन
dealName = "Test Deal" dealName, "टेस्ट डील" के बराबर है.
dealName = (Test Deal) dealName, "टेस्ट" के बराबर है और "डील" के बराबर भी हो.
dealName = ("Test1" OR "Test2")

dealName = "Test1" OR dealName = "Test2"
dealName, "Test1" के बराबर है या "Test2" के बराबर हों.
dealName:* dealName is not null.
dealName:"test"

dealName:test
dealName में "टेस्ट" सबस्ट्रिंग शामिल है.
dealName:("A B")

dealName:"A B"
dealName में "A B" सबस्ट्रिंग है.
dealName:(A B)

dealName:"A" AND dealName:"B"
dealName में "A" सबस्ट्रिंग है और सबस्ट्रिंग "B" हो.
dealName:("A" OR "B" AND "C")

dealName:("A" OR "B" "C")

dealName:"A" OR dealName:"B" AND dealName:"C"

dealName:"A" OR dealName:"B" dealName:"C"

(dealName:"A" OR dealName:"B") AND dealName:"C"

(dealName:"A" OR dealName:"B") dealName:"C"
dealName में या तो "A" सबस्ट्रिंग है या "B" और इसमें "C" सबस्ट्रिंग भी शामिल है
dealName:("A B" C)

dealName:"A B" AND dealName:"C"
dealName में "A B" सबस्ट्रिंग है और इसमें सबस्ट्रिंग "C" भी होगी.
dealName:("A B" OR C D) dealName में "A B" सबस्ट्रिंग है या "C", और इसमें सबस्ट्रिंग "D" भी शामिल है.
dealName:(NOT "A" B)

NOT dealName:"A" AND dealName:"B"

(NOT dealName:"A") AND dealName:"B"

(NOT dealName:"A") dealName:"B"
dealName में कोई भी सबस्ट्रिंग "A" नहीं है और इसमें सबस्ट्रिंग "B" भी शामिल है.
dealName:(NOT "A" OR "B")

NOT dealName:"A" OR dealName:"B"
(NOT dealName:"A") OR dealName:"B"
dealName में कोई भी सबस्ट्रिंग "A" नहीं है या सबस्ट्रिंग "B" में है.