来自关系数据库背景我发现很容易将用户及其角色分解为规范化表。但是在mongo数据库中执行此操作的习惯方法是什么?
情景我有
({ "roles" :
[
{"role": "user"},
{"role": "manager"},
{"role": "admin"}
]
"privileges" :
[
{"privilege": "READ"},
{"privilege": "READ/WRITE"},
{"privilege": "ALL"}
]
"users" :
[
{"user": "Sammy"},
{"user": "Tom"},
{"user": "Fred"},
{"user": "Zack"}
]
"userPermissions" :
[
{"admin": "Sammy"},
{"manager": "Tom"},
{"user": "Fred"},
{"user": "Zack"}
]
})
问题:这是在Mongo中建模用户角色的合适方式吗?
答案 0 :(得分:2)
如果您的角色是纯字符串或原始元组,则可以将它们存储为每个用户文档中的array
。如果角色是一个复杂的实体,您可以将它们存储为doc-refs数组。
更新:
这是我的userAccount
集合中的文档,由Spring Security Core Grails plugin
生成:
{
"_id" : "541fdfdebaacef69047415a8",
"authorities" : [
{
"authority" : "ROLE_USER"
},
{
"authority" : "ROLE_ADMIN"
}
],
"password" : "lakdjalksdj87a68sd76as87d6a87sd6",
"username" : "someusername",
"version" : NumberLong(1)
}
Spring Security
它的后代是java中的标准安全实现,所以......
答案 1 :(得分:0)