我希望状态字符串值大于2个字符的不同状态。
我的查询是,
db.company.distinct("state",{$where:"this.state.length>2"})
它向我显示以下错误,
" ERRMSG" :"异常:TypeError:无法读取属性' length'的 null \ n在_funcs1(_funcs1:1:40)",
请帮忙
答案 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评估,因为整个调用和解释将比原生编码运算符慢得多。