मैंने पाया कि $pull कमांड मेरे लिए तब तक काम नहीं करता जब तक कि मैं तर्क सूची में कॉलबैक शामिल नहीं करता।
मेरी स्थिति में, यह प्रारूप काम नहीं किया:
UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}});
लेकिन इस प्रारूप ने किया:
UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}}, function(err, data){
console.log(err, data);
});
प्रलेखन के अनुसार, ऐसा लगता है कि दोनों को काम करना चाहिए, लेकिन नहीं। इसका कारण यह है कि पहले तरीके से आपको लौटाई गई वस्तु पर .exec () कॉल करने की आवश्यकता होती है, जबकि कॉलबैक संस्करण स्वचालित रूप से निष्पादन () को कॉल करता है। मेरे लिए भी कुछ भ्रम पैदा किया।
तो आपको कुछ ऐसा करने की ज़रूरत है:
UserAlerts.findOneAndUpdate({userId: userId}, {$pull: {alerts: {_id: alertId}}}).exec();