从数组中删除对象($ pull似乎不起作用)

时间:2016-10-19 23:24:02

标签: node.js mongodb express mongoose mongodb-query

我试图从以下内容中删除基于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
    ) }

1 个答案:

答案 0 :(得分:1)

尝试以下查询:

db.collection.update(
    { "_id" : <id> },
    { $pull : { "lessons" : { "lesson_id" : <lesson_id> } } }
);

这将在<id>找到一个文档,并从其<lesson_id>数组中删除其lessons

希望这有帮助。