sql >> Database >  >> NoSQL >> MongoDB

MongoDB:$push een berekende uitdrukking in een $groep

Je zou een $cond . kunnen gebruiken ( http://docs.mongodb.org/manual/reference /aggregation/cond/#exp._S_cond ) hiervoor:

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

Bewerken

Zoals een andere bewerking al zei, heeft het eigenlijk $eq . nodig werken sinds {'$v':true} wordt niet beoordeeld als een correcte uitdrukking.




  1. Vraag mongodb om documenten terug te sturen die vandaag zijn gemaakt

  2. Node JS Redis Clientverbinding Opnieuw proberen

  3. mongoDB voegt specifieke gegevens toe aan db Replica

  4. $addFields als er geen $match is gevonden