我的集合中有以下数据:
{ colour: { r: 0, g: 0, b: 0 }},
{ colour: null },
我如何找到在某些值之间具有colour == null
或color.r
的所有文档?
I've try
.find({ where: { $or: [{colour: null}, {"colour.r": {$gt: 0, $lt: 100}}]}})
但这当然给了我cannot read property 'r' of null
空行
只有在没有其他方式表达查询时才使用 $where
db.test.find({$or: [{"colour": null}, {"colour.r": {$gt: 0, $lt: 100}}]})
为完整起见:
db.test.find({$nor: [{"colour.r": {$lte: 0}}, {"colour.r": {$gte: 100}}]})
$nor
将匹配表达式失败的所有文档。
在这里,您不必显式地测试null
,因为它既不大于也不小于任何数字——因此,将不通过测试,就像范围(0,100)1
<子><一口> 1> 一口>子>
除非你不需要一个查询,否则你可以运行两个查询:
- 查找所有文档
where color == null
- 查找
where color != null and color between 0 and 100