开发者社区> 问答> 正文

Mongodb层级结构的字段互相比较如何写语法?:报错

我在操作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中怎么互相比较。。。

 

展开
收起
kun坤 2020-06-09 23:24:29 425 0
1 条回答
写回答
取消 提交回答
  • 结贴,原来是可以的,其实是有部分数据父级存在null值,需要先过滤掉就可以正常查询了

    db.Z3_EQUITY.find({"$and":[{"perf_idx":{$ne:null}},{"$where": "this.perf_idx.chng_pct_month>this.perf_idx.chng_pct_month"}]})

    2020-06-09 23:24:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载