mongoose:根据另一个模型从结果中排除对象

比方说,我有一个UserGroup模型,组有用户,如

 var GroupSchema = mongoose.Schema({ name: String, users: [{ type: mongoose.Schema.ObjectId, ref: 'User' }] }); 

我将如何查询获取所有用户,但排除在Group.users ,我已经通过查询第一个Group然后手动筛选所有users

  var groupP = Group.findById(group_id).populate('users'); var userP = User.find(); Promise.props({ group: groupPromise.exec(), users: usersPromise.exec() }) .then(function (result) { //this gives the expected result but I'm looking for a more straight forward mongoose only solution if possible var users = differenceWith(result.users, result.group.users, (a, b) => { return a._id.toString() == b._id.toString()}); }) 

你可以试试下面的查询。

 var groupP = Group.findById(group_id); var userP = User.find({_id:{$nin:groupP.users}});