【发布时间】:2017-03-02 18:16:42
【问题描述】:
我正在尝试设置一个删除按钮,可以在其中删除课程中的课程。不过,使用 $pull 似乎只是将 course_id 设置为 null 。有没有办法完全删除该元素?
var classSchema = new Schema({
title: { type: String, required: true },
lessons: [{
_id: false,
lesson_id: {type: mongoose.Schema.Types.ObjectId, ref: 'Lesson'}
}]
});
module.exports.deleteLesson = function(class_id, lesson_id, callback){
Class.update(
{'_id': class_id},
{ $pull: {lessons: {'lesson_id.$._id': lesson_id}}},
callback
)
}
例如
{ _id: 5808,
title: 'cd',
__v: 0,
lessons: [ { lesson_id: [Object] }, { lesson_id: [Object] } ] }
变成
{ _id: 5808,
title: 'cd',
__v: 0,
lessons: [ { lesson_id: null }, { lesson_id: [Object] } ] }
【问题讨论】:
-
我不认为 $ 在这种情况下是正确的运算符,而是应该使用 pullAll 如果你使用 { $pull: {lessons: {'lesson_id._id': course_id}}}或预感 { $pull: {lessons: {'lesson_id': course_id}}} ?
标签: node.js mongodb express mongoose mongodb-query