我是 MongoDB 的新手,如果我的方法不正确,请原谅我。我正在构建一个应用程序,在其中创建了简单的角色和权限管理。权限和角色有单独的集合。一个角色可以有多个权限,这些权限可以属于多个角色。典型的多对多关系。 我已在每个角色集合中嵌入权限,如下所示。
角色集合
db.roles.find().pretty()
{
"_id" : ObjectId("60b6e6dca3b92759976e3037"),
"role" : "Role 1",
"permissions" : [
"60b6e023a3b92759976e3033",
"60b6e055550b3f41692caa2b",
"60b6e07b550b3f41692caa2c"
],
"updated_at" : ISODate("2021-06-02T02:03:08.282Z"),
"created_at" : ISODate("2021-06-02T02:03:08.282Z")
}
相同角色的权限
> db.permissions.find({"_id":{"$in":[ObjectId("60b6e023a3b92759976e3033"), ObjectId("60b6e055550b3f41692caa2b"), ObjectId("60b6e07b550b3f41692caa2c")]}}).pretty()
{
"_id" : ObjectId("60b6e023a3b92759976e3033"),
"permission" : "product_listing",
"label" : "Product Listing",
"level" : 1,
"parent" : null,
"created_at" : ISODate("2021-06-02T01:45:22.287Z"),
"updated_at" : ISODate("2021-06-02T01:45:22.287Z")
}
{
"_id" : ObjectId("60b6e055550b3f41692caa2b"),
"permission" : "stock",
"label" : "Stock",
"level" : 2,
"parent" : ObjectId("60b6e023a3b92759976e3033"),
"created_at" : ISODate("2021-06-02T01:45:22.287Z"),
"updated_at" : ISODate("2021-06-02T01:45:22.287Z")
}
{
"_id" : ObjectId("60b6e07b550b3f41692caa2c"),
"permission" : "previously_bought_icon",
"label" : "Previously bought icon",
"level" : 2,
"parent" : ObjectId("60b6e023a3b92759976e3033"),
"created_at" : ISODate("2021-06-02T01:45:22.287Z"),
"updated_at" : ISODate("2021-06-02T01:45:22.287Z")
}
现在我想要像下面这样的东西
$role->permissions()
应该输出所有permsion,详细信息如上所示。
我尝试了belongsToMany、embedMany关系,但没有用。似乎我使用了错误的方法,或者我应该将更多字段传递给 elowuent 关系。请帮忙。提前致谢。