4

这似乎是一个足够简单的问题,但我还没有找到答案:我正在使用 MongoDB,我想执行一个提供搜索条件的查询,但我也想排除基于某些文档被排除的例外情况关于标准。例如,想象一个包含字段nameage的集合gender

检索特定年龄以下的所有人?简单:<collection>.find({'age':{'$lt':<maxAge>}}) 检索所有低于特定年龄的女性?小菜一碟:<collection>.find({'gender':female, 'age':{'$lt':<maxAge>}})

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

4

1 回答 1

3

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

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

或者

collection.find({$or: [{age: {$not: {$lt: maxAge}}}, {gender: {$ne: 'female'}}]})
于 2013-01-25T01:24:33.000 回答