如何删除位于模型内的 Mongodb 数据?

How to delete Mongodb data located inside a model?

我正在使用 React 和 Nodejs 构建笔记网站。我使用的 npm 包是:

  1. express-session
  2. 护照
  3. passport-local
  4. passport-local-猫鼬

我的用户架构如下所示-

{ 
    "_id" : ObjectId("6267e8f8502e789211229a38"), 
    "username" : "a@1.com", 
    "notes" : [
        {
            "date" : "26 Apr", 
            "title" : "Lorem ipsum is placeholder text", 
            "content" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut ", 
            "_id" : ObjectId("6267e95a502e789211229a45")
        }, 
        {
            "date" : "26 Apr", 
            "title" : "Lorem ipsum is placeholder text", 
            "content" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut ", 
            "_id" : ObjectId("6267e96b502e789211229a54")
        }
    ], 
    "folders" : [], 
    "salt" : "......", 
    "hash" : "......", 
    "__v" : NumberInt(2)
}

我的问题是我无法删除位于已登录用户的用户数据中的单个注释。我知道如何删除模型,但我不知道如何只删除位于该模型内的特定文件。

我的目标是删除注释数组中的一个注释。

有人可以帮忙吗?

您可以执行以下操作,使用 noteId 从 notes 数组中提取注释。您需要来自 params 或来自 req.body

的 noteId
router.delete('/:userId/notes/:noteId', async (req, res) => {
try {
    const user = await User.updateOne(
      { _id: req.params.userId },
      { $pull: { notes: { _id: req.params.noteId } } }
      res.send(user);
    );
  } catch (err) {
    res.status(500).send(err);
  }
})