2016-01-14 6 views
5

का उपयोग करके अपने अद्वितीय _id द्वारा एकाधिक मोंगोडीबी ऑब्जेक्ट्स को अपडेट करना मूल रूप से मैं अपने मोंगो डेटाबेस पर अपने ऑब्जेक्ट ऑब्जेक्ट आईडी (_id) के आधार पर कई ऑब्जेक्ट्स अपडेट करने का प्रयास कर रहा हूं। मैंने अनुवर्ती कोशिश की लेकिन उन्होंने काम नहीं किया:Node.js

var new_arr = []; 
    for (var i = 0; i < req.body.length; i++) { 
    // req.body is an array received from the POST request. 
    new_arr.push({"_id": new mongodb.ObjectID(req.body[i])}) 
    } 
    console.log(new_arr); 

    // new_arr is not accepted since an object is expected. 
    job_applications.updateMany(
     new_arr 
     , 
     { 
     $set: {"application_status": "rejected"} 
     }, function (err, results) { 
     console.log(results); 
     console.log(err); 
     if (!err) { 
      console.log('success with reject'); 
      res.sendStatus(200); 
     } 
     } 
); 

मैंने बिना किसी किस्मत के निम्नलिखित प्रयास किए।

var job_applications = req.app.locals.job_applications; 
    var new_arr = []; 
    for (var i = 0; i < req.body.length; i++) { 
    // req.body is an array of unique IDs (_id) 
    new_arr.push(new mongodb.ObjectID(req.body[i])) 
    } 
    var send_obj = { 
    "_id": new_arr 
    }; 
    job_applications.updateMany(
     send_obj 
     , 
     { 
     $set: {"application_status": "rejected"} 
     }, function (err, results) { 
     console.log(results); 
     console.log(err); 
     if (!err) { 
      console.log('success with reject'); 
      res.sendStatus(200); 
     } 
     } 
); 

एकमात्र समाधान मैं इस समस्या का पाया MongoDB के लिए प्रत्येक वस्तु के लिए कई updateOne() अनुरोध भेजने के लिए था, लेकिन है कि बहुत अक्षम है। मेरा मानना ​​है कि इस समस्या के लिए एक और अधिक कुशल समाधान होना चाहिए। किसी भी मदद/मार्गदर्शन की बहुत सराहना की जाती है।

उत्तर

5

आप एक दूसरे के साथ निकट हैं, लेकिन आप संभावित मानों की एक सरणी के खिलाफ _id मैच के लिए $in क्वेरी ऑपरेटर उपयोग करने की आवश्यकता:

var new_arr = []; 
for (var i = 0; i < req.body.length; i++) { 
    new_arr.push(new mongodb.ObjectID(req.body[i])) 
} 
job_applications.updateMany({_id: {$in: new_arr}}, ...); 
+0

धन्यवाद! श्रीमान, मेरी जिंदगी बचाई :) – Aryan