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 के साथ)।