如何指定从查询中排除文档的条件?

时间:2013-01-24 23:17:28

标签: mongodb

这似乎是一个简单的问题,但我没有找到答案: 我正在使用MongoDB,我想执行一个查询,其中我提供了搜索条件,但我也想要开出一个例外,根据条件排除某些文档。例如,假设一个包含字段nameagegender的集合。

检索低于某个年龄的所有人?简单:<collection>.find({'age':{'$lt':<maxAge>}}) 检索低于某一年龄的所有女性?一块蛋糕:<collection>.find({'gender':female, 'age':{'$lt':<maxAge>}})

但是检索每个人怎么样,除非他们是[女性且低于某个年龄?]。您可以使用'$ ne'运算符轻松否定特定字段,但如何否定符合一组条件的所有人?

1 个答案:

答案 0 :(得分:3)

您必须应用布尔逻辑将AND反转为每个术语否定的OR:

collection.find({$or: [{age: {$gte: maxAge}}, {gender: {$ne: 'female'}}]})

collection.find({$or: [{age: {$not: {$lt: maxAge}}}, {gender: {$ne: 'female'}}]})