【发布时间】:2021-04-01 13:39:05
【问题描述】:
我有一个 Schedule 架构,我正在尝试从嵌套的 slotsPerDay 数组中获取一个元素。
const scheduleSchema = mongoose.Schema({
course_id: {{type: mongoose.Schema.Types.ObjectId, ref: 'course' }},
week_schedule: [{
day: {type: String, required: true },
slotsPerDay: [{type: mongoose.Schema.Types.ObjectId, ref: 'slots' }],
}]
});
我正在尝试从封装在 week_schedule 数组中的 slotPerDay 数组中删除某个插槽 ObjectID,如下所示。
SchemaModel.findOneAndUpdate(
{course_id: req.body.course_id},
{ "$pull": { "week_schedule": { "slotsPerDay": {"_id": req.body.slotID }}}}
,{new:true})
但是,此查询会删除整个 week_schedule 数组及其所有插槽,而不仅仅是与查询中给出的 slotID 的映射。有什么帮助解决这个问题吗?
我试过{ "$pull": { "week_schedule.slotsPerDay": {"_id": req.body.slotID }}}
但我得到了错误
不能使用 (week_schedule.slotsPerDay) 的部分 (slotsPerDay) 来 遍历元素 ({week_schedule: [ { slotsPerDay: [ ObjectId('5fe0263872f7b53aac93334a'), ObjectId('5fe0263872f7b53aac933349'), ObjectId('5fe0263872f7b53aac93334b'), ObjectId('5fe0263872f7b53aac93334c'), ObjectId('5fe0263872f7b53aac93334d'), ObjectId('5fe0263872f7b53aac93334e'), ObjectId('5fe0263872f7b53aac93334f'), ObjectId('5fe0263872f7b53aac933350')],_id: ObjectId('5fe0266a72f7b53aac933364'),天:“星期六”},{ slotPerDay:[],_id:ObjectId('5fe0266a72f7b53aac933365'),天: "星期日" }, { slotPerDay: [], _id: ObjectId('5fe0266a72f7b53aac933366'), day: "Monday" }, { slotsPerDay: [对象ID('5fe0263872f7b53aac933356'), ObjectId('5fe0263872f7b53aac933357'), ObjectId('5fe0263872f7b53aac933359'), ObjectId('5fe0263872f7b53aac93335a')],_id: ObjectId('5fe0266a72f7b53aac933368'), day: "星期三" }, { slotPerDay: [ ObjectId('5fe0263872f7b53aac93335b'), ObjectId('5fe0263872f7b53aac93335c'), ObjectId('5fe0263872f7b53aac93335d'), ObjectId('5fe0263872f7b53aac93335e'), ObjectId('5fe0263872f7b53aac93335f'), ObjectId('5fe0263872f7b53aac933360'), ObjectId('5fe0263872f7b53aac933361'), ObjectId('5fe0263872f7b53aac933362')],_id: ObjectId('5fe0266a72f7b53aac933369'), day: "星期四" } ]})
【问题讨论】:
-
您是要从
week_schedule数组中删除一天还是从嵌套的slotsPerDay数组中删除一个元素? -
嵌套 SlotsPerDay 中的一个元素
标签: javascript node.js mongodb mongoose