使用Mongoose从Array删除子文档

时间:2018-07-27 14:34:58

标签: mongodb mongoose

我是Mongoose的新手,我的成员架构嵌套在会议室架构中,如下所示:

    const MemberSchema = new Schema({
       nickname: String,
       id : String
    });

    const RoomSchema = new Schema({
       code: String,
       members: [MemberSchema]
    });

我只需要从members数组中删除一条记录,我已经尝试过但是失败了:

      Room.findOne({'members.id' : socket.id}).then(result=>{
         result.members.pull({'id' : socket.id});
         result.save();
      })

PS:我不想使用Mongodb默认的_id,我需要它作为我之前提供的ID,对您有帮助吗?

1 个答案:

答案 0 :(得分:0)

我刚刚想出了一个使用Filter方法的解决方案,效果似乎很好:

    //Delete user from Database
    Room.findOne({'members.id' : socket.id}).then(result=>{
      let tempArr = result.members.filter(record=>{
        return record.id === socket.id;
      })
      tempArr[0].remove();
      result.save();
    })