mongoose:根据另一个模型从结果中排除对象
比方说,我有一个User
和Group
模型,组有用户,如
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}});