MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB $type क्वेरी ऑपरेटर

MongoDB में, आप $type . का उपयोग कर सकते हैं तत्व क्वेरी ऑपरेटर बीएसओएन प्रकार के आधार पर दस्तावेजों के संग्रह को फ़िल्टर करने के लिए। यह केवल उन दस्तावेज़ों को लौटाता है जिनमें एक विशिष्ट फ़ील्ड में एक विशेष बीएसओएन प्रकार होता है।

आप फ़ील्ड और BSON प्रकार, और $type . प्रदान करते हैं मेल खाने वाले सभी दस्तावेज़ लौटाएगा।

उदाहरण

मान लीजिए कि हम निम्नलिखित दस्तावेज़ों को employees . नामक संग्रह में सम्मिलित करते हैं :

db.employees.insertMany([
    { _id: 1, name: "Sandy", remuneration: "Too Much!!!" },
    { _id: 2, name: "Sarah", remuneration: NumberInt(128000) },
    { _id: 3, name: "Fritz", remuneration: 25000 },
    { _id: 4, name: "Chris", remuneration: NumberDecimal("45000.75") },
    { _id: 5, name: "Beck", remuneration: "10% commission" },
    { _id: 6, name: "Peter", remuneration: "70K" },
    { _id: 7, name: "Homer", remuneration: null },
    ])

प्रत्येक दस्तावेज़ में उस कर्मचारी के पारिश्रमिक के साथ एक कर्मचारी होता है।

हालाँकि, जबकि प्रत्येक दस्तावेज़ का एक remuneration होता है फ़ील्ड में, हम देख सकते हैं कि इस क्षेत्र में उपयोग किए जा रहे BSON प्रकार के संबंध में दस्तावेज़ों में कोई एकरूपता नहीं है।

हम $type . का उपयोग कर सकते हैं क्वेरी ऑपरेटर केवल उन दस्तावेज़ों को वापस करने के लिए जिनके लिए remuneration फ़ील्ड एक निश्चित बीएसओएन प्रकार का है।

उदाहरण:

db.employees.find( { remuneration: { $type: "double" } } )

परिणाम:

{ "_id" : 3, "name" : "Fritz", "remuneration" : 25000 }

इस मामले में, remuneration . में केवल एक दस्तावेज़ में BSON प्रकार का डबल होता है फ़ील्ड.

आइए देखें कि किन-किन में तार होते हैं:

db.employees.find( { remuneration: { $type: "string" } } )

परिणाम:

{ "_id" : 1, "name" : "Sandy", "remuneration" : "Too Much!!!" }
{ "_id" : 5, "name" : "Beck", "remuneration" : "10% commission" }
{ "_id" : 6, "name" : "Peter", "remuneration" : "70K" }

number उपनाम

आप number का उपयोग कर सकते हैं उपनाम, संख्यात्मक प्रकार वाले दस्तावेज़ों को वापस करने का एक सुविधाजनक तरीका है।

संख्या उपनाम निम्नलिखित बीएसओएन प्रकारों से मेल खाता है:

  • double
  • 32-bit integer
  • 64-bit integer
  • decimal

उदाहरण:

db.employees.find( { remuneration: { $type: "number" } } )

परिणाम:

{ "_id" : 2, "name" : "Sarah", "remuneration" : 128000 }
{ "_id" : 3, "name" : "Fritz", "remuneration" : 25000 }
{ "_id" : 4, "name" : "Chris", "remuneration" : NumberDecimal("45000.75") }

एकाधिक प्रकार की जांच करें

आप बीएसओएन प्रकारों की एक सरणी प्रदान करके कई प्रकारों की जांच कर सकते हैं।

उदाहरण:

db.employees.find( { 
  remuneration: { $type: ["double", "int", "null"] } 
  } )

परिणाम:

{ "_id" : 2, "name" : "Sarah", "remuneration" : 128000 }
{ "_id" : 3, "name" : "Fritz", "remuneration" : 25000 }
{ "_id" : 7, "name" : "Homer", "remuneration" : null }

नंबर के आधार पर फ़िल्टर करें

प्रत्येक बीएसओएन प्रकार में एक समान संख्या और उपनाम होता है (जैसा कि मोंगोडीबी दस्तावेज में उल्लिखित है)।

पिछले उदाहरण उपनाम का उपयोग करते हैं। आप वैकल्पिक रूप से बीएसओएन प्रकार के उपनाम के बजाय संख्या का उपयोग कर सकते हैं।

उदाहरण:

db.employees.find( { 
  remuneration: { $type: [1, 16, 10] } 
  } )

परिणाम:

{ "_id" : 2, "name" : "Sarah", "remuneration" : 128000 }
{ "_id" : 3, "name" : "Fritz", "remuneration" : 25000 }
{ "_id" : 7, "name" : "Homer", "remuneration" : null }

इस मामले में, मैंने संख्याओं की एक सरणी प्रदान की है जो double . के अनुरूप है , int , और null (जो पिछले उदाहरण के समान परिणाम देता है)।

MongoDB 3.2 से पहले, $type . के साथ केवल नंबर स्वीकार किए जाते थे क्वेरी ऑपरेटर। स्ट्रिंग उपनाम केवल MongoDB 3.2 के बाद से स्वीकार किए गए हैं।

फ़ील्ड का प्रकार लौटाएं

एक $type भी है एकत्रीकरण पाइपलाइन ऑपरेटर जो आपको BSON प्रकार के फ़ील्ड मान प्राप्त करने की अनुमति देता है।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नेवला एकत्रीकरण क्वेरी Jest/Mockgoose परीक्षण में विफल रहता है, कहीं और काम करता है

  2. MongoDb c# ड्राइवर फ़ील्ड मान द्वारा सरणी में आइटम ढूंढता है

  3. एक नए संग्रह के लिए मोंगोडब एकत्रीकरण ढांचे का निर्यात करें

  4. मोंगो में शार्किंग और प्रतिकृति के बीच अंतर क्या है?

  5. MongoDB ढूँढें और संशोधित करें ()