如何在Mongoose中查询排除含'Admin':2000角色的所有用户?
在Mongoose中排除含特定Admin角色值的用户查询方案
要实现获取所有用户,但排除roles对象中包含Admin:2000的用户(无论该用户是否拥有其他角色),可以使用以下两种查询方式:
简洁写法
利用MongoDB的$ne操作符,它会同时匹配没有Admin角色和**Admin角色值不等于2000**的文档:
const users = await User.find({ "roles.Admin": { $ne: 2000 } });
直观写法(明确逻辑)
如果需要更清晰地表达逻辑,可以用$or组合两个条件,分别匹配无Admin角色和Admin值非2000的情况:
const users = await User.find({ $or: [ { "roles.Admin": { $exists: false } }, { "roles.Admin": { $ne: 2000 } } ] });
逻辑说明
- 对于像示例中
Admin:555的用户,两种写法都会将其纳入查询结果; - 任何
roles.Admin值为2000的用户,无论是否拥有User、Editor等其他角色,都会被排除; - 完全没有
Admin角色的普通用户,也会被正常返回。
内容的提问来源于stack exchange,提问作者Uriel Espada
相关产品推荐
相关产品推荐

