MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

comment comparer deux champs dans un document dans l'agrégation de pipeline (mongoDB)

Le problème n'est pas avec l'opérateur de comparaison, c'est le type de valeur que vous comparez. Vous devez changer les types de variables en nombres. Changez votre correspondance en 1, -1 ou 0 en fonction de votre comparaison.

db.bcamp.aggregate(
[
  {$project: {ab: {$cmp: ['$budget','$clickcost']}}},
  {$match: {ab:{$eq:1}}}
]).pretty();

Vous pouvez utiliser $expr en version 3.6.

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

Ou

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