2017-02-08 72 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}}]);