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

时间:2021-05-28 17:28:28

标签: mongodb mongoose

总结: 我正在开发一个具有登录功能的简单 MERN 堆栈待办事项应用程序。我还没有实现登录,因为我不知道如何去做。每个待办事项当前都作为一个单独的文档(具有属性 _id、名称和描述)存储在“项目”集合中。我正在使用猫鼬。

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

item
{ _id:39v6m8356nv45435
  title:"Buy milk",
  description:"no description",
  userID:09239bfd234g }

或者我应该将用户凭据及其所有待办事项存储在一个文档中吗?如果我这样做,我如何从数组中访问单个待办事项,或向数组添加更多项目?

user
{ _id:980w3709b476jh,
  username:"John",
  password:"weak",
  todos: [{todo1},{todo2}]
}

或者,我应该做点别的吗?

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

1 个答案:

答案 0 :(得分:0)

我假设,您不必将一个用户的 ToDos 共享给另一个用户,如果是这种情况,您只能将它们存储在同一个文档中(但是,MongoDB BSON 文档大小的最大限制为 {{1 }})

您可以查看 MongoDB 数组运算符,例如

  • 16MB 向添加项添加项目
  • $push 从添加中删除项目
  • $pull 根据不同条件仅获取某些项目(例如唯一的 $filter

您还可以检查 todo_id(如果您想使用聚合管道可能会很有用`

相关问题