在Mongoose的Models中如何删除数组中特定位置的数据?

发布于 2022-09-07 20:13:51 字数 826 浏览 12 评论 0

问题描述

如何删除mongodb中的数组里面特定位置的数据?
如这样的一个飞机的实体:

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

我现在希望删除components中的第三个数据,但是没有找到办法按照索引删除。

问题出现的环境背景及自己尝试过哪些方法

想要删除实例中的数组的数据,一般使用$pop或者$pull方法。
但是$pop只能删除第一位或者最后一位的数据,$pull方法必须规定要删除的数据的名称

相关代码

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){});
// 这样的方法只能删除第一位的数据

求救,MAYDAY

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小糖芽 2022-09-14 20:13:51

对应的mongo shell脚本写法:
db.jobcard.update({AIRPLANENUMBER:"xxxx",MAINTAINNUMBER:'xxx'},{$pullAll:{MISSION:['fuselage']}})

参考文档:$pullAll

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文