我的收藏中有以下数据:
{ colour: { r: 0, g: 0, b: 0 }},
{ colour: null },
如何在某些值之间找到colour == null
或color.r
的所有文档?
我试过
.find({ where: { $or: [{colour: null}, {"colour.r": {$gt: 0, $lt: 100}}]}})
但当然这给了cannot read property 'r' of null
空行。
答案 0 :(得分:4)
仅在没有其他方式表达您的查询时才使用$where
db.test.find({$or: [{"colour": null}, {"colour.r": {$gt: 0, $lt: 100}}]})
答案 1 :(得分:1)
除非不需要单个查询,否则您可以运行2个查询:
where color == null
where color != null and color between 0 and 100
答案 2 :(得分:1)
为了完整起见:
db.test.find({$nor: [{"colour.r": {$lte: 0}}, {"colour.r": {$gte: 100}}]})
$nor
将匹配失败表达式的所有文档。
在这里,您不必明确测试null
,因为它既不大于也不低于任何数字 - 因此,测试将失败,就像中的任何数字范围(0,100) 1
<子> 1 异。如果您需要查找[0,100]范围内的所有文档,请将$gte
(分别为$lte
)替换为$gt
(分别为$lt
)。