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

MongoDB में सिंपल फ़ील्ड को ऑब्जेक्ट में बदलें

MongoDB में $rename ऑपरेटर का उपयोग करके फ़ील्ड नाम बदलना और नेस्ट करना

$rename ऑपरेटर फ़ील्ड का नाम बदलता है। डॉट नोटेशन का उपयोग करके आप फ़ील्ड को नेस्टेड ऑब्जेक्ट संरचना में ले जा सकते हैं।

सैंपल डेटा बनाना

> db.changeSimpleFieldDemo.insertOne({"StudentMarks":58,"StudentSubject":"MySQL"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0847a825ddae1f53b62205") }

दस्तावेज़ देखना

> db.changeSimpleFieldDemo.find();

आउटपुट:


$rename के साथ फ़ील्ड्स को नेस्टेड ऑब्जेक्ट में बदलना

> // चरण 1: StudentMarks को अस्थायी नाम "obj" में रीनेम
> db.changeSimpleFieldDemo.update({}, {$rename: {StudentMarks: 'obj'}}, {multi: true});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

> // चरण 2: obj को Student.Marks में, और StudentSubject को Student.Subject में रीनेम
> db.changeSimpleFieldDemo.update({}, {$rename: {obj: 'Student.Marks', StudentSubject: 'Student.Subject'}}, {multi: true});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

परिणाम (अपेक्षित संरचना)


चरण-दर-चरण स्पष्टीकरण

  1. पहले StudentMarks को अस्थायी नाम obj में रीनेम किया (क्योंकि सीधे Student.Marks में रीनेम करने से नेस्टेड पथ बन जाता)
  2. फिर obj को Student.Marks में और StudentSubject को Student.Subject में रीनेम किया
  3. multi: true सभी मिलान करने वाले दस्तावेज़ों को अपडेट करता है

महत्वपूर्ण नोट्स

  • $rename केवल फ़ील्ड नाम बदलता है, मान नहीं
  • लक्ष्य पथ में डॉट होने पर पैरेंट ऑब्जेक्ट स्वचालित रूप से बनता है
  • यदि लक्ष्य फ़ील्ड पहले से मौजूद है, तो यह ओवरराइट हो जाता है
  • Deprecated update() के बजाय updateMany() उपयोग करें

आधुनिक सिंटैक्स


एग्रीगेशन विकल्प (नॉन-डिस्ट्रक्टिव)

            
  1. - MongoDB में सिंपल क्वेरी का उपयोग करके दस्तावेज़ कैसे फ़िल्टर करें?

    दस्तावेज़ फ़िल्टर करने के लिए $match का उपयोग करें। $match केवल उन दस्तावेज़ों को पास करता है जो निर्दिष्ट शर्त से मेल खाते हैं, अगले पाइपलाइन स्टेज के लिए। नमूना डेटा बनाना db.demo629.insertOne( { Subject: [MySQL, MongoDB], details: [ { Name:Chris, Marks:78 }, { Name:David, Marks:89 } ] } );

  1. - MongoDB में फ़ील्ड नाम कैसे बदलें?

    फ़ील्ड नाम बदलने के लिए, $project का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo517.insertOne({Name:Chris Brown}); { acknowledged : true, insertedId : ObjectId(5e88a2a2987b6e0e9d18f595) } > db.demo517.insertOne({Name:David Miller}); { acknowledged : true, insertedId : ObjectI

  1. - MongoDB में ग्रुपिंग को ऑब्जेक्ट में प्रोजेक्ट करके केवल मार्क्स फील्ड प्रदर्शित करें

    आइए पहले एक दस्तावेज बनाते हैं: > var document= [ { SubjectName: MySQL, Marks: 78 }, { SubjectName: MongoDB, Marks: 89 }, { SubjectName: Java, Marks: 71 }, ]; दस्तावेज प्रदर्शित करने के लिए क्वेरी: > printjson(document); यह निम्न आउटपुट देगा: [ { SubjectName: MySQL, Marks: 78