sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongo Gruppe og sum med to felter

Da du skal beregne antallet af e-mails, der udveksles mellem 2 adresser, ville det være rimeligt at projicere en samlet between felt som følgende:

db.a.aggregate([
    { $match: {
        to: { $exists: true },
        from: { $exists: true },
        email: { $exists: true }
    }}, 
    { $project: {
        between: { $cond: { 
            if: { $lte: [ { $strcasecmp: [ "$to", "$from" ] }, 0 ] }, 
            then: [ { $toLower: "$to" }, { $toLower: "$from" } ], 
            else: [ { $toLower: "$from" }, { $toLower: "$to" } ] }
        } 
    }},
    { $group: {
         "_id": "$between",
         "count": { $sum: 1 } 
    }},
    { $sort :{ count: -1 } }
])

Foreningslogikken burde være helt klar fra eksemplet:det er en alfabetisk sorteret række af begge e-mails. $match og $toLower dele er valgfrie, hvis du har tillid til dine data.

Dokumentation for operatører brugt i eksemplet:



  1. Kan ikke finde modul i Nodejs

  2. Læs data fra Redis til Flink

  3. eksportere og importere data fra mongodb ved hjælp af node.js express

  4. Sådan analyseres diskbrug af en Docker-container