Mongodb NoSQL数据建模:不同的配置文件类型

Mongodb NoSQL数据建模:不同的配置文件类型,mongodb,database,nosql,Mongodb,Database,Nosql,假设我有一个用户可以属于一个组中的多个角色。它是这样建模的(来自第三方库) 对于每种角色类型,都有不同的配置文件类型。例如,审阅者可能有如下模式: { approved: [{ pullRequest: '5678', message: 'Now can manage 3D integration', when: ISODate() }], denied: [{ pullRequest: '1234', reason: 'Failed test

假设我有一个用户可以属于一个组中的多个角色。它是这样建模的(来自第三方库)

对于每种角色类型,都有不同的配置文件类型。例如,
审阅者可能有如下模式:

{
  approved: [{
    pullRequest: '5678',
    message: 'Now can manage 3D integration',
    when: ISODate()
  }],
  denied: [{
    pullRequest: '1234',
    reason: 'Failed tests',
    when: ISODate()
  }]
}
这可能不同于
贡献者的个人资料。用户仍然可以在每个组中拥有他们所担任的每个角色的配置文件


在NoSQL中,如何管理多种类型的用户配置文件?此应用程序最正确的模式和关系类型是什么?

在您的示例中,我假设审阅者正在批准和拒绝请求。这是您不希望存储在用户文档中的信息,而是偏移到一个新集合,您可能会调用PullRequests。PullRequests集合中的每个文档将代表一个PullRequest,您将在该文档中存储关于该特定PullRequest的信息,包括该请求是否被批准/拒绝,以及随后是谁批准/拒绝了该请求以及原因。将角色存储在用户文档上是为了进行验证,以便您可以检查某人是否具有所需的权限;关于他们活动的日志信息最好留给一个单独的集合。这是一个清晰的关注点分离,这种模型关系将更容易维护


请随时询问任何后续信息。

是有意义的,但请说,
主持人
档案包含他批准或拒绝的拉取请求列表,而
投稿人
档案包含他提交的拉取请求列表。您如何区分这两个配置文件?我将在每个PullRequest文档中存储这些信息。如果您需要查找版主批准的所有PullRequests,您可以使用类似于
PullRequests.find({approvedBy:user.\u id})
的方法。在MongoDB中,识别父/子关系非常重要。用户是独立的。用户有一个角色。拉取请求的状态由用户设置。
{
  approved: [{
    pullRequest: '5678',
    message: 'Now can manage 3D integration',
    when: ISODate()
  }],
  denied: [{
    pullRequest: '1234',
    reason: 'Failed tests',
    when: ISODate()
  }]
}