检查可以为空的嵌套属性



我的集合中有以下数据:

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

我如何找到在某些值之间具有colour == nullcolor.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>

除非你不需要一个查询,否则你可以运行两个查询:

  1. 查找所有文档where color == null
  2. 查找where color != null and color between 0 and 100

相关内容

  • 没有找到相关文章

最新更新