我有两个模式,我一直用来在我的基本网站上运行用户和权限。该网站由一个express.js框架和mongob上的mongoose组成。模式看起来类似于:
UserSchema = new Schema({
Name: { type: String },
Email: { type: String },
Roles: [{ type: ObjectId, ref: 'Role' }]
});
RoleSchema = new Schema({
Name: { type: String }
})
我可以插入有或没有角色的用户,我可以创建没有问题的角色。删除角色时会出现此问题。用户最终会维护对它的引用,并在尝试搜索用户的角色时导致问题。我需要做的是像
UserModel.find({ })
.where('Roles').contains(roleID)
.exec(function(err, users) { })
这应该只给我拥有该角色的用户。有什么想法吗?
答案 0 :(得分:1)
当mongodb查询默认为someArray: someValue
时,它将其解释为“匹配someArray包含someValue的任何父文档”。所以这很简单:
UserModel.find({Roles: roleId}, callback);
旁注:当你问一个关于猫鼬的问题并使用'populate'这个词时,这意味着mongoose的填充功能。在这种情况下,您似乎在询问有关vanilla集合查询的信息。