【问题标题】:Removing An Object From An Array ($pull doesn't seem to work)从数组中删除对象($pull 似乎不起作用)
【发布时间】:2017-03-01 18:48:31
【问题描述】:

我正在尝试从以下内容中删除基于课程 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,但我的代码似乎都只是将 classes.lesson_id 设置为 null 并保留 classes._id

是否可以从对象中删除两者?

module.exports.deleteLessonFromClass = function(id, lesson_id, callback){   Class.update(
        {'_id': id}, 
        { $unset: {lessons: {lesson_id: lesson_id}}},
        callback
    ) }

【问题讨论】:

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


【解决方案1】:

尝试以下查询:

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

这将找到&lt;id&gt; 的文档并将其&lt;lesson_id&gt; 从其lessons 数组中删除。

希望这会有所帮助。

【讨论】:

  • 你的lesson_id 是ObjectId,所以你必须像下面这样:"lesson_id" : ObjectId("yourObjectId")
猜你喜欢
  • 1970-01-01
  • 2021-09-12
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多