आप परमाणु अद्यतन विधि का उपयोग कर सकते हैं जैसे findOneAndUpdate()
कोड>
अपनी पोस्ट के लिए जहां आप upsert
. निर्दिष्ट कर सकते हैं विकल्प। अगर upsert
सत्य है और कोई दस्तावेज़ क्वेरी मानदंड से मेल नहीं खाता, findOneAndUpdate()
एकल दस्तावेज़ सम्मिलित करता है। यहां आप देशी का उपयोग भी कर सकते हैं$push
जब आप मोंगो को सर्वर पर सभी काम करने दे सकते हैं, तो लूप का उपयोग करने के बजाय नए प्रश्न और प्रश्न सरणी के उत्तर को आगे बढ़ाने के लिए ऑपरेटर।
निम्न उदाहरण दिखाता है कि आप अपने कोड को कैसे रिफलेक्टर कर सकते हैं:
var express = require('express');
var router = express.Router();
var Survey = require('../models/QBank');
router.post('/', function(req, res, next){
Survey.findOneAndUpdate(
{ "surveyname": req.body.sname }, /* <query> */
{ /* <update> */
"$push": {
"question": {
"que": req.body.que,
"ans1": req.body.ans1,
"ans2": req.body.ans2,
"ans3": req.body.ans3,
"ans4": req.body.ans4
}
}
},
{ "upsert": true }, /* <options> */
function(err, doc){ /* <callback> */
if(err) res.json(err);
else
req.flash('success_msg', 'Question saved to QBank');
res.redirect("/CreateSurvey");
}
);
});
module.exports = router;
उपरोक्त में, <query>
. दोनों के क्षेत्र और मान और <update>
पैरामीटर बनाए जाते हैं यदि <update>
पैरामीटर में अपडेट ऑपरेटर एक्सप्रेशन शामिल हैं। अद्यतन <query>
. में समानता खंड से एक मूल दस्तावेज़ बनाता है पैरामीटर, और फिर <update>
. से अपडेट एक्सप्रेशन लागू करता है पैरामीटर।