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

MongoDB :$push une expression calculée dans un $group

Vous pouvez utiliser un $cond ( http://docs.mongodb.org/manual/reference /agrégation/cond/#exp._S_cond ) pour cela :

db.c.aggregate( [
    { $project: {
        k: '$k',
        color: {
            $cond: [ 
                { $eq: [ '$v', true ] }, 
                'red', 
                'green'
            ]
        }
    } },
    { $group: {
        _id: '$k',
        vals: { '$push': '$color' }
    } }
] )

Modifier

Comme une autre modification l'a mentionné, il a en fait besoin de $eq fonctionner depuis {'$v':true} n'est pas évalué comme une expression correcte.