这似乎是一个简单的问题,但我没有找到答案:
我正在使用MongoDB,我想执行一个查询,其中我提供了搜索条件,但我也想要开出一个例外,根据条件排除某些文档。例如,假设一个包含字段name
,age
和gender
的集合。
检索低于某个年龄的所有人?简单:<collection>.find({'age':{'$lt':<maxAge>}})
检索低于某一年龄的所有女性?一块蛋糕:<collection>.find({'gender':female, 'age':{'$lt':<maxAge>}})
但是检索每个人怎么样,除非他们是[女性且低于某个年龄?]。您可以使用'$ ne'运算符轻松否定特定字段,但如何否定符合一组条件的所有人?
答案 0 :(得分:3)
您必须应用布尔逻辑将AND反转为每个术语否定的OR:
collection.find({$or: [{age: {$gte: maxAge}}, {gender: {$ne: 'female'}}]})
或
collection.find({$or: [{age: {$not: {$lt: maxAge}}}, {gender: {$ne: 'female'}}]})