鍍金池/ 問答/數(shù)據(jù)庫  網(wǎng)絡(luò)安全  HTML/ 在Mongoose的Models中如何刪除數(shù)組中特定位置的數(shù)據(jù)?

在Mongoose的Models中如何刪除數(shù)組中特定位置的數(shù)據(jù)?

問題描述

如何刪除mongodb中的數(shù)組里面特定位置的數(shù)據(jù)?
如這樣的一個飛機的實體:

number:B-xxxx,
components:[fuselage,wings,engines,landinggears]

我現(xiàn)在希望刪除components中的第三個數(shù)據(jù),但是沒有找到辦法按照索引刪除。

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

想要刪除實例中的數(shù)組的數(shù)據(jù),一般使用$pop或者$pull方法。
但是$pop只能刪除第一位或者最后一位的數(shù)據(jù),$pull方法必須規(guī)定要刪除的數(shù)據(jù)的名稱

相關(guān)代碼

var jobcardSchema = new mongoose.Schema({

AIRPLANENUMBER:{type:String,unique:false,requied:true},
MAINTAINNUMBER:{type:String,unique:false},
MAINTAINDATE:{type:Date},
MISSION:{type:Array}

},{versionKey:'_somethingElse'});

var jobcard = mongoose.model('dbjobcard',jobcardSchema,'JOBCARD');

jobcard.findOneAndUpdate({AIRPLANENUMBER:"xxxx",MAINTAINNUMBER:'xxx'},{$pop:{MISSION:-1}},function(err,result){});
// 這樣的方法只能刪除第一位的數(shù)據(jù)

求救,MAYDAY

回答
編輯回答
哚蕾咪

對應(yīng)的mongo shell腳本寫法:
db.jobcard.update({AIRPLANENUMBER:"xxxx",MAINTAINNUMBER:'xxx'},{$pullAll:{MISSION:['fuselage']}})

參考文檔:$pullAll

2018年7月29日 10:33