我试图从以下内容中删除基于lesson_id的课程。
{
"_id" : ObjectId("5807f3f"),
"title" : "Title",
"lessons" : [
{
"lesson_id" : ObjectId("58073"),
"_id" : ObjectId("58074")
},
{
"lesson_id" : ObjectId("5807f5"),
"_id" : ObjectId("5807f6")
},
{
"lesson_id" : ObjectId("58077"),
"_id" : ObjectId("5807f4")
}
],
"__v" : 0
}
我尝试过$ pull和$ unset,但我的代码似乎只是将lessons.lesson_id设置为null并保留课程._id
无论如何都要从对象中删除它们吗?
module.exports.deleteLessonFromClass = function(id, lesson_id, callback){ Class.update(
{'_id': id},
{ $unset: {lessons: {lesson_id: lesson_id}}},
callback
) }
答案 0 :(得分:1)
尝试以下查询:
db.collection.update(
{ "_id" : <id> },
{ $pull : { "lessons" : { "lesson_id" : <lesson_id> } } }
);
这将在<id>
找到一个文档,并从其<lesson_id>
数组中删除其lessons
。
希望这有帮助。