首页 > 解决方案 > 如何删除 mongodb 数据库中的特定 id?

问题描述

我在这里使用 nodejs、express、mongodb 和 mongoose!碰巧我正在尝试删除“关注者”文档中的一些 ID...

这是模型的一部分(我只是复制这部分,因为它是我感兴趣的部分):

  var UserSchema = new mongoose.Schema({
     followers: [
        {
            type: mongoose.Schema.Types.ObjectId,
            ref: 'User'
        }
})

我正在尝试使用以下代码删除:

try{
    let user = await User.findById(req.params.id);
    user.followers.remove({_id: ObjectId(req.user._id)});
    user.save();
  }
  catch(err) {
    res.redirect('back');
  }

req.user._id 是我试图从“关注者”中删除的用户的 ID,但是,每当我执行此操作时,页面只会继续加载并且没有任何反应。=我要删除的关注者不是被删除。有人可以帮我吗?

标签: node.jsmongodbmongoose

解决方案


You can deletedocuments within an Array by using $pull In single Query

Query :

db.getCollection('users')
  .update({ "_id": ObjectId("5bb4747f316fcf310f3ef0a4") },
    { $pull: { followers: { _id: ObjectId('5bb4747f316fcf310f3ef0a5') } } },
    { multi: true })

Tested on Mongo GUI.

Test on below doc

{
    "_id" : ObjectId("5bb4747f316fcf310f3ef0a4"),
    "index" : "123456",
    "followers" : [ 
        {
            "_id" : ObjectId("5bb4747f316fcf310f3ef0a6"),
            "name" : "green"
        },
       {
            "_id" : ObjectId("5bb4747f316fcf310f3ef0a5"),
            "name" : "green"
        }
    ]
  }

推荐阅读