我在操作mongodb的过程中发现,带有层级结构的字段比较$where会不起作用
假如我的mongodb库是这种带嵌套的格式:
"mng_hld_pct" : 1,
"mng_chng_pct" : 0,
"perf_idx" : {
"enddate" : ISODate("2017-04-17T00:00:00.000Z"),
"aaa" : 1.4055,
"chng_pct_month" : -6.9767
}
我现在要找出 mng_chng_pct 大于 perf_idx.chng_pct_month 的数据,我的写法如下
db.MyData.find({"$where":"this.mng_chng_pct>this.perf_idx.chng_pct_month"})
发现mongodb不能匹配,究其原因是因为有内嵌结构perf_idx,如果同样的写法对只有一层结构的字段互相比较是可以的,下面这句语法是可以执行的
db.MyData.find({"$where":"this.mng_hld_pct>this.in_chng_pct"})
请问各位,有层级结构的字段在mongodb中怎么互相比较。。。
结贴,原来是可以的,其实是有部分数据父级存在null值,需要先过滤掉就可以正常查询了
db.Z3_EQUITY.find({"$and":[{"perf_idx":{$ne:null}},{"$where": "this.perf_idx.chng_pct_month>this.perf_idx.chng_pct_month"}]})
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。