sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB sammanlagt returräkning på 0 om inga resultat

Om jag förstår rätt vad du vill kan du prova detta:

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 } }
])

Uppdatering:
Du vill få ut fler dokument som har lagts in, det är endast möjligt med unwind operatör som fungerar med arrayer, men du har inga arrayer, så som jag vet är det omöjligt att få fler dokument i ditt fall. Så du bör lägga till lite logik efter frågeresultat för att skapa ny data för befintliga datum med 0 antal för en annan typ av buildResult...




  1. Konfigurera pymongo att använda string _id istället för ObjectId

  2. Flera nyckel som pekar på ett enda värde i Redis (Cache) med java

  3. Hur man använder Liquibase-MongoDb-Spring-boot

  4. Får tidsstämpel från mongodb id