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

एक-एक और एक-अनेक संदर्भों को हटाना - नेवला

रिश्ते:

  1. एक one-to-one is a relationship जैसे कि एक राज्य में केवल एक राजधानी शहर है और एक राजधानी शहर केवल एक राज्य की राजधानी है
  2. एक one-to-many is a relationship जैसे कि एक माँ के कई बच्चे होते हैं, और बच्चों की एक ही माँ होती है
  3. एक many-to-many is a relationship जैसे कि एक किताब कई लेखकों या सह-लेखकों द्वारा लिखी जा सकती है, जबकि एक लेखक कई किताबें लिख सकता है।

एक-एक संबंध - यदि कोई Project/Group हटा दिया गया है, मैं अपना Assignment कैसे अपडेट कर सकता हूं? स्कीमा.

आमतौर पर आपके पास एक project होगा एक Assignment . में मैप किया गया और इसी तरह एक Assignment एक project . में मैप किया गया . आप यहां क्या कर सकते हैं एक प्रोजेक्ट को हटा रहा है और फिर संबंधित project ढूंढ सकता है असाइनमेंट मॉडल में और उनके संदर्भ हटा दें।

delete: function(req, res) {
   return Project.findById(req.params.id, function(err, project){
         return project.remove(function(err){
             if(!err) {
                 Assignment.update({_id: project.assignment}}, 
                      {$pull: {projects: project._id}}, 
                          function (err, numberAffected) {
                            console.log(numberAffected);
                      } else {
                        console.log(err);                                      
                    }
                  });
            });
        });
}

एक-अनेक संबंध - यदि कोई Project/Group हटा दिया गया है, मैं अपना Assignment कैसे अपडेट कर सकता हूं? स्कीमा.

इस परिदृश्य में हम एक प्रोजेक्ट को हटा रहे हैं और फिर सभी Assignment . ढूंढ रहे हैं जो इस project . से संबंधित है और उनसे इसका संदर्भ हटा रहा है। यहाँ स्थिति यह है कि, एक ही प्रोजेक्ट के लिए कई असाइनमेंट हो सकते हैं।

delete: function(req, res) {
   return Project.findById(req.params.id, function(err, project){
         return project.remove(function(err){
             if(!err) {
                 Assignment.update({_id: {$in: project.assingments}}, 
                      {$pull: {project: project._id}}, 
                           function (err, numberAffected) {
                            console.log(numberAffected);
                      } else {
                        console.log(err);                                      
                    }
                  });
            });
        });
}

मिडलवेयर हटाएं

आप middleware . के माध्यम से एक ही चीज़ हासिल कर सकते हैं जैसा कि जॉनी ने बताया, उस पर बस एक सुधार ..

ProjectSchema.pre('remove', function (next) {
    var project = this;
    project.model('Assignment').update(
        { projects: {$in: project.assignments}}, 
        { $pull: { project: project._id } }, 
        { multi: true }, 
        next
     );
});

आमतौर पर कई project हो सकते हैं एक Assignment . से संबंधित है और कई Assignment एक ही project . से संबंधित . आपके पास एक Assignment होगा आपके project . में कॉलम स्कीमा जहां एक प्रोजेक्ट कई असाइनमेंट से संबंधित होगा।

नोट: मिडलवेयर निकालें मॉडल पर काम नहीं करेगा और यह केवल आपके दस्तावेज़ों पर काम करेगा। यदि आप remove . के साथ जा रहे हैं मिडलवेयर आपके डिलीट फंक्शन में सुनिश्चित करता है, आपको project . मिलता है पहले आईडी द्वारा और फिर लौटाए गए document . पर हटाने का तरीका लागू करें, ताकि उपरोक्त काम करे... आपका डिलीट फंक्शन इस तरह दिखेगा।

delete: function(req, res) {
   return Project.findById(req.params.id, function(err, project){
         return project.remove(function(err){
             if(!err) {
                  console.log(numberAffected);
             } 
           });                
    });
 }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडीबी $isoWeekYear

  2. मोंगोडब मानदंड से मेल खाने वाली सभी वस्तुओं में सभी सरणी तत्वों की गणना करता है

  3. MongoDB में एक इंडेक्स को अनहाइड करने के 2 तरीके

  4. Mongodb:127.0.0.1:27017 से कनेक्ट करने में विफल, कारण:त्रुटि:10061

  5. शब्दकोश<स्ट्रिंग, वस्तु>-से-Bsonदस्तावेज़ रूपांतरण _t फ़ील्ड को छोड़ कर