MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

como comparar dois campos em um documento na agregação de pipeline (mongoDB)


O problema não é com o operador de comparação, é o tipo de valor que você está comparando. Você deve alterar os tipos de variável para Numbers. Altere sua correspondência para 1, -1 ou 0 com base em sua comparação.
db.bcamp.aggregate(
[
  {$project: {ab: {$cmp: ['$budget','$clickcost']}}},
  {$match: {ab:{$eq:1}}}
]).pretty();

Você pode usar $expr na versão 3.6.
db.bcamp.aggregate(
[
  {$match: {$expr: {$eq: ["$budget", "$clickcost"]}}}
]).pretty();

Ou
db.bcamp.find(
 {$expr: {$eq: ["$budget", "$clickcost"]}}
).pretty();