检查可以为null的嵌套属性

时间:2015-05-31 16:44:28

标签: mongodb mongodb-query

我的收藏中有以下数据:

{ colour: { r: 0, g: 0, b: 0 }},
{ colour: null },

如何在某些值之间找到colour == nullcolor.r的所有文档?

我试过

.find({ where: { $or: [{colour: null}, {"colour.r": {$gt: 0, $lt: 100}}]}})

但当然这给了cannot read property 'r' of null空行。

3 个答案:

答案 0 :(得分:4)

仅在没有其他方式表达您的查询时才使用$where

db.test.find({$or: [{"colour": null}, {"colour.r": {$gt: 0, $lt: 100}}]})

答案 1 :(得分:1)

除非不需要单个查询,否则您可以运行2个查询:

  1. 查找所有文件where color == null
  2. 查找所有文件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)。