2017-10-13 3 views
0

J'ai une requête mongo et j'ai besoin de grouper et de soustraire la valeur minimum de la valeur max et j'ai des problèmes à faire.Soustraction de Mongo dans l'agrégation de groupe

Voici ma question:

{ 
    $group : { 
     _id : { 
      type: "$type", 
      id : "$id" 
      }, 
     sent : {$subtract: [{$max : "$value"}, {$min : "$value"}]} 
    } 
} 

Mais je reçois ce message d'erreur:

L'accumulateur de Soustraire $ est un opérateur unaire

Je voudrais savoir comment faire Je soustrais à l'intérieur de la phase de groupe.

Répondre

1

Pouvez-vous essayer la requête ci-dessous:

db.[collection].aggregate([ 
{ 
     $group : { 
      _id : { 
       type: "$type", 
       id : "$id" 
       }, 
      maxValue : {$max : "$value"} , 
      minValue : {$min : "$value"} 
     } 
    }, 
    { 
     $group : { 
      _id : { 
       type: "$_id.type", 
       id : "$_id.id" 
       }, 
      sent : {$subtract: [ "$maxValue", "$minValue" ]} 
     } 
    } 
])