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

MongoDB samlet afkastantal på 0, hvis ingen resultater

Hvis jeg forstår rigtigt, hvad du vil, kan du prøve dette:

db.builds.aggregate([
    { $project: 
        { 
            time: 1,
            projectedData: { $ifNull: ['$data.buildResult', 'none'] } 
        } 
    },

    { $group: { 
        _id: { 
            month: { $month: "$time" },
            day: { $dayOfMonth: "$time" },
            year: { $year: "$time" }, 
            buildResult: "$projectedData"
        },
        count: { $sum: { $cond: [ { $eq: [ "$projectedData", "none" ] }, 0, 1 ] } }
    } },

    { $sort: { "_id.year": 1, "_id.month": 1, "_id.day": 1 } }
])

Opdatering:
Du ønsker at få ud af flere dokumenter, der har været i input, det er kun muligt med unwind operatør, der arbejder med arrays, men du har ingen arrays, så som jeg ved, er det umuligt at få flere dokumenter i din sag. Så du bør tilføje noget logik efter forespørgselsresultatet for at oprette nye data for eksisterende datoer med 0 tæller for en anden type buildResult...




  1. meteor, mongodb, mellemrumstaster, hvordan viser jeg kun 2 decimaler

  2. MongoDB - Fejl:ugyldigt skema, forventet mongodb

  3. MongoDB fjern mapreduce-samling

  4. Gennemtving en typetilknytning med mgo