【发布时间】:2012-08-22 16:20:39
【问题描述】:
我将创建一个这样的架构:
[
{
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),因此我的查询必须为此做好准备。
【问题讨论】: