Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में डॉक्यूमेंट को उसके सबडॉक्यूमेंट्स द्वारा विभाजित करें

MongoDB में $unwind के साथ डॉक्यूमेंट को सबडॉक्यूमेंट्स द्वारा विभाजित करना

डॉक्यूमेंट को उसके सबडॉक्यूमेंट्स द्वारा विभाजित करने के लिए MongoDB में $unwind का उपयोग करें।

कलेक्शन बनाना

> db.demo276.insertOne({"Name":"Chris","Subjects":["MySQL","MongoDB"]});
{ "acknowledged": true, "insertedId": ObjectId("5e48f953dd099650a5401a51") }

अपडेट से पहले

> db.demo276.find().pretty();

$unwind के साथ विभाजन क्वेरी

> db.demo276.aggregate( [ { $unwind: "$Subjects" } ] )

परिणाम


व्याख्या

  • $unwind: "$Subjects": Subjects ऐरे के प्रत्येक तत्व के लिए एक अलग डॉक्यूमेंट आउटपुट करता है
  • मूल डॉक्यूमेंट के अन्य फील्ड्स (Name, _id) प्रत्येक आउटपुट डॉक्यूमेंट में दोहराए जाते हैं
  • Subjects फील्ड अब ऐरे नहीं, बल्कि एकल स्ट्रिंग मान है

उपयोग के मामले

  • ऐरे तत्वों पर व्यक्तिगत रूप से एग्रीगेशन करना
  • ऐरे तत्वों के आधार पर जॉइन/लुकअप करना
  • रिलेशनल फॉर्मेट में डेटा निर्यात करना
  • ऐरे तत्वों द्वारा ग्रुपिंग और काउंटिंग

विकल्प: preserveNullAndEmptyArrays

{ $unwind: { path: "$Subjects", preserveNullAndEmptyArrays: true } }

यह खाली ऐरे या गायब फील्ड वाले डॉक्यूमेंट्स को भी आउटपुट में रखता है (Subjects को null के साथ)।

  1. - MongoDB में Nested Document में Condition Set करना

    मान लें हमें specific value से greater value वाले document find करना है। इसके लिए nested document में dot notation का उपयोग करें और $gt से condition set करें। Collection बनाना > db.demo688.insert( ... { ... information:{id:1,details:[ ... {otherDetails:{ ... values:75 ... }} ...

  1. - MongoDB में सब-डॉक्यूमेंट द्वारा सब-डॉक्यूमेंट्स फ़िल्टर करें

    इसके लिए, $unwind के साथ aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo583.insert([ { details1: [ { details2: [ { isMarried: true, Name: Chris }, { isMarried: true, Name: Bob }

  1. - MongoDB में सबडॉक्यूमेंट्स को लगातार जोड़ें

    सबडॉक्यूमेंट्स जोड़ने के लिए, MongoDB में $push का उपयोग करें। अपडेट के लिए update() का उपयोग किया जाता है। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo587.insertOne({id:101,details:[{Name:Chris,Age:21,Marks:57}]}); { acknowledged : true, insertedId : ObjectId(5e92ba01fd2d90c177b5bcc9)