0

我有两个模式,我一直在使用它们在我的基本站点上运行用户和权限。该站点由一个 express.js 框架和 mongoose over mongodb 组成。架构看起来与此类似:

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) { })

这应该只给我具有该角色的用户。有任何想法吗?

4

1 回答 1

1

默认情况下,当 mongodb 查询具有someArray: someValue“匹配 someArray 包含 someValue 的任何父文档”时,它会解释为“匹配任何父文档”。所以这是微不足道的:

UserModel.find({Roles: roleId}, callback);

旁注:当您询问有关猫鼬的问题并使用“填充”一词时,这意味着猫鼬的填充功能。在这种情况下,您似乎在询问香草集合查询。

于 2013-09-14T03:31:59.677 回答