我将创建一个这样的模式:
[
{
username: "fabio",
password: "xxx",
roles: [
{
rolename: "administrator",
isVip: true
},
{
rolename: "manager",
isVip: true
}
]
},
{
username: "marco",
password: "yyy",
roles: [
{
rolename: "manager",
isVip: true
}
]
},
{
username: "pippo",
password: "...",
roles: [
{
rolename: "monkey",
isVip: false
}
]
}
]
现在我想列出我的应用程序中可用的所有角色,从用户集合开始。
我想到了一条SELECT DISTINCT rolename FROM ...
SQL 语句。
我想得到类似的结果{"administrator","manager","monkey"}
。
- 是否可以?
我可以执行什么查询?我坚持:
db.users.find({ "roles.rolename": { $exists : true }});
但这会找到所有用户,而不是所有角色。
好吗?还是创建另一个集合“角色”并保留一组 ObjectId 更好?
我正在使用 Mongoose(用于 nodejs 的 mongodb),所以我的查询必须为此做好准备。