对于空值,Mongodb distinct查询返回.distinct(" state",{$ where:" this.state.length> 2"})的错误

时间:2015-10-27 12:04:32

标签: mongodb

我希望状态字符串值大于2个字符的不同状态。

我的查询是,

db.company.distinct("state",{$where:"this.state.length>2"})

它向我显示以下错误,

  

" ERRMSG" :"异常:TypeError:无法读取属性' length'的   null \ n在_funcs1(_funcs1:1:40)",

请帮忙

2 个答案:

答案 0 :(得分:2)

我得到了答案, db.companies.find({"状态" {$ NE:空},$其中:" this.state.length→2"})

答案 1 :(得分:1)

该错误基本上意味着该属性未定义,并且当它不存在时在JavaScript代码下引用它会引发错误。

而是使用$exists

db.company.distinct("state", { "state.2": { "$exists": true } });

通过这种方式,这是一个简单的测试,实际上甚至可以使用“索引”来加速结果。基本上,如果数组中存在一个索引为2(n-1)的元素,那么数组中有两个以上的元素。

除非你真的需要,否则你永远不应该恢复到JavaScript评估,因为整个调用和解释将比原生编码运算符慢得多。