2017-02-08 2 views
0

Я новичок в mongodb. Я пытаюсь преобразовать следующий запрос sql в запрос mongodb.Как сравнить вычисленное поле с полем сбора в MongoDB?

выбрать ename, sal, comm from emp где comm> (sal * 1.10);

и ниже - это то, что я пробовал до сих пор.

  1. db.emp.aggregate ([{$ спичкой: {COMM: {$ существует: истинно}}}, {$ Проект: {ENAME: 1, SAL: 1, COMM: 1, 'CALSAL' : {$ multiply: ['$ SAL', 1.10]}}}, {$ match: {'CALSAL': {$ gt: '$ COMM'}}}]);

  2. db.emp.aggregate ([{$ match: {COMM: {$ exists: true}}}, {$ project: {ENAME: 1, SAL: 1, COMM: 1, 'CALSAL': { $ multiply: ['$ SAL', 1.10]}}}, {$ match: {'$ COMM': {$ gt: 'CALSAL'}}}]);

  3. 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

После многих усилий у меня есть два пути решения проблемы выше.

  1. db.emp.find ({COMM: {$ существует: правда} $, где: "this.COMM> (this.SAL * 1,10)"}, {ENAME: 1, SAL: 1, COMM: 1});

  2. 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}}]);

Смежные вопросы