2017-02-08 42 views
0

我是mongodb的新手。我正试图将下面的sql查询转换为mongodb查询。如何比较MongoDB中的计算字段与收集字段?

select ename,sal,comm from emp where comm>(sal * 1.10);

以下是我到目前为止所尝试的。

  1. db.emp.aggregate([{$比赛:{COMM:{$存在:真正}}},{$项目:{ENAME:1,SAL:1,COMM:1, 'CALSAL' :{$ multiply:['$ SAL',1.10]}}},{$ match:{'CALSAL':{$ gt:'$ COMM'}}}]); ({{{}}},{$ project:{ENAME:1,SAL:1,COMM:1,'CALSAL':{} { $ multiply:['$ SAL',1.10]}}},{$ match:{'$ COMM':{$ gt:'CALSAL'}}}]); ({{{}}},{$ project:{ENAME:1,SAL:1,COMM:1,'CALSAL':{} { $ multiply:['$ SAL',1.10]},cmp_value:{$ cmp:['$ COMM','CALSAL']}},{$ match:{cmp_value:{$ gt:0}}}]);

任何帮助,将不胜感激。

在此先感谢。

回答

0

经过很多努力,我有两种方法来解决上述问题。

  1. db.emp.find({COMM:{$存在:真},$其中: “this.COMM>(this.SAL * 1.10)”},{ENAME:1,SAL:1, COMM:1}); ({{{}}},{$ project:{ENAME:1,SAL:1,COMM:1,'CALSAL':{} { $ multiply:['$ SAL',1.10]}}},{$ project:{ENAME:1,SAL:1,COMM:1,cmp_value:{$ cmp:['$ COMM','$ CALSAL']} }},{$ match:{cmp_value:1}}]);