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

नेस्टेड सरणियों पर $unwind का उपयोग करने के परिणाम?

जब $unwind होने वाले डेटा की प्रतिकृति के कारण आईएनजी।

$match का इस्तेमाल करना परिणामों को उन विशिष्ट दस्तावेज़ों तक सीमित करने के लिए जिन्हें आप खोज रहे हैं, निश्चित रूप से लौटाए गए डेटा को रखने के लिए आवश्यक स्मृति की मात्रा को कम करने का एक तरीका है।

मेमोरी फ़ुटप्रिंट को कम करने का दूसरा तरीका है $project कोड> . $project आपको पाइपलाइन में दस्तावेज़ों को फिर से व्यवस्थित करने की अनुमति देता है ताकि आप केवल उन्हीं तत्वों को वापस कर सकें जिनमें आप रुचि रखते हैं।

अपने उदाहरण का उपयोग करने के लिए,

{
  someInfo: "blah blah blah",
  answers: [
    {
      email: "example@sqldat.com",
      values: [
        {value: 1, label: "test1"},
        {value: 2, label: "test2"}    
      ]
    },
    {
      email: "example@sqldat.com",
      values: [
        {value: 6, label: "test1"},
        {value: 1, label: "test2"}    
      ]
    }
  ]
}

साथ

db.collection.aggregate([{ $match: { <element>: <value> }}, { $project: { _id: 0, answers: 1}}])

someInfo को हटा देगा और अन्य विशेषताएँ जिनमें आपकी रुचि नहीं हो सकती है। तब आप $project फिर से खोलने के बाद...

db.collection.aggregate([
   { $match: { <element>: <value> }},
   { $project: { _id: 0, answers: 1}},
   { $unwind: "$answers"},
   { $unwind: "$answers.tags"},
   { $project: { e: "$answers.email", v: "$answers.values"}}
])

काफी कॉम्पैक्ट परिणाम देगा जैसे:

{ e: "example@sqldat.com", v: { value: 1, label: "test1" } }
{ e: "example@sqldat.com", v: { value: 2, label: "test2" } }
{ e: "example@sqldat.com", v: { value: 6, label: "test1" } }
{ e: "example@sqldat.com", v: { value: 1, label: "test2" } }

हालांकि एकल अक्षर विशेषता नाम मानव-पठनीयता को कम करते हैं, यह डेटा के आकार में कटौती करता है जो लंबे समय तक दोहराए गए विशेषता नामों से फुलाया जाता है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb - लिखने के लिए भारी एप्लिकेशन के लिए मल्टी सीपीयू सर्वर का उपयोग

  2. मानगो एकत्रीकरण:मूल्यों को समूहों में विभाजित करना (विभाजन द्वारा)

  3. एक्सप्रेस + MongoDB के लिए सर्वश्रेष्ठ सत्र संग्रहण मिडलवेयर

  4. क्या हम मोंगोडब क्रूड क्वेश्चन और एग्रीगेट क्वेरी एक साथ लिख सकते हैं?

  5. MongoDB:केवल अंतिम सरणी तत्व लौटाने और खोजने के लिए क्यों हैं?