使用MongoDB仅检索特定用户的数据

使用MongoDB仅检索特定用户的数据,mongodb,mongoose,Mongodb,Mongoose,摘要: 我正在开发一个带有登录功能的简单MERN stack待办应用程序。我还没有实现登录,因为我不知道该怎么做。每个待办事项当前存储为“items”集合中的单个文档(具有属性_id、名称和描述)。我在用猫鼬 问题:如何更新数据库结构,以便存储每个注册用户的登录凭据,并仅获取登录用户的待办事项?我可以这样做的一种方法是将用户凭据存储在单独的集合中,并向每个待办文档添加一个“userID”属性,以便我可以通过userID获取它们: item { _id:39v6m8356nv45435 tit

摘要: 我正在开发一个带有登录功能的简单MERN stack待办应用程序。我还没有实现登录,因为我不知道该怎么做。每个待办事项当前存储为“items”集合中的单个文档(具有属性_id、名称和描述)。我在用猫鼬

问题:如何更新数据库结构,以便存储每个注册用户的登录凭据,并仅获取登录用户的待办事项?我可以这样做的一种方法是将用户凭据存储在单独的集合中,并向每个待办文档添加一个“userID”属性,以便我可以通过userID获取它们:

item
{ _id:39v6m8356nv45435
  title:"Buy milk",
  description:"no description",
  userID:09239bfd234g }
或者我应该在一个文档中存储用户凭据及其所有待办事项吗?如果这样做,如何从数组中访问单个待办事项,或向数组中添加更多的事项

user
{ _id:980w3709b476jh,
  username:"John",
  password:"weak",
  todos: [{todo1},{todo2}]
}
或者,我应该做些别的事情吗


我不是在寻找一个完美的答案,但如果有人能给我指出正确的方向,我将不胜感激。任何文章或视频也会有所帮助。

我假设,您不必将一个用户的TODO共享给另一个用户,如果是这样,您可以将它们仅存储在同一个文档中(但是有一个最大MongoDB BSON文档大小限制
16MB

您可以查看MongoDB数组操作符,如

  • $push
    将项目添加到添加
  • $pull
    从添加中删除项目
  • $filter
    根据不同的条件仅获取某些项目(例如唯一的
    待办事项id
您还可以检查
$unwind
(如果要使用聚合管道,可能会很有用)`