我是mongodb的新手。我正在尝试将以下sql查询转换为mongodb查询。
从emp中选择ename,sal,comm,其中comm> (SAL * 1.10);
以下是我到目前为止所尝试的内容。
db.emp.aggregate([{$ match:{COMM:{$ exists:true}}},{$ project:{ENAME:1,SAL:1,COMM:1,' CALSAL':{$ multiply:[' $ SAL',1.10]}}},{$ match:{' CALSAL':{$ gt:' $ COMM& #39;}}}]);
db.emp.aggregate([{$ match:{COMM:{$ exists:true}}},{$ project:{ENAME:1,SAL:1,COMM:1,' CALSAL':{$ multiply:[' $ SAL',1.10]}}},{$ match:{' $ COMM':{$ gt:' CALSAL& #39;}}}]);
db.emp.aggregate([{$ match:{COMM:{$ exists:true}}},{$ project:{ENAME:1,SAL:1,COMM:1,' CALSAL':{$ multiply:[' $ SAL',1.10]},cmp_value:{$ cmp:[' $ COMM',' CALSAL'] },{$ match:{cmp_value:{$ gt:0}}}]);
任何帮助将不胜感激。
提前致谢。
答案 0 :(得分:0)
经过多方努力,我有两种方法可以解决上述问题。
db.emp.find({COMM:{$ exists:true},$ where:" this.COMM>(this.SAL * 1.10)"},{ENAME: 1,SAL:1,COMM:1});
db.emp.aggregate([{$ match:{COMM:{$ exists:true}}},{$ 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}}]);