आप &elementMatch
. का उपयोग कर सकते हैं सरणी में इच्छा मौसम खोजने के लिए, और सेटफ़ील्ड ऑब्जेक्ट में आप स्थितीय $
का उपयोग कर सकते हैं ऑपरेटर जो क्वेरी में मेल खाने वाले तत्व की पहचान करता है।
समस्या यह है कि अगर उसे season_number
. से मेल खाने वाला कोई सीज़न नहीं मिलता है , दस्तावेज़ अद्यतन नहीं किया जाएगा। इस मामले में आप इस सीज़न को seasons
. में जोड़ने के लिए एक और अपडेट क्वेरी सेट कर सकते हैं सरणी।
router.put('/api/shows/:id/seasons/:sid', function(req, res){
var query = {
"_id": req.params.id,
"seasons": {
$elemMatch: {
"season_number": req.params.sid
}
}
}
var setField = {
$addToSet: {
"seasons.$.episodes": req.body
}
}
TV.findOneAndUpdate(query, setField, {upsert:true}, function(err, results){
if (err && err.code == 16836) { // no document was matched
var season = {
"season_number": req.params.sid
"episodes": [ req.body]
}
TV.findOneAndUpdate({"_id": req.params.id}, {$push: {"seasons": season}} , function(err, result) {
console.log("Inserted document in array");
res.json(result)
});
}
else if (err){
console.log(err);
res.status(500).send('Something wrong!');
}
else {
console.log(setField);
res.json(results)
}
})
})
आप यहां देख सकते हैं कुछ मोंगोडब सरणी ऑपरेटर।
आशा है कि यह मदद करता है।