sql >> Databáze >  >> NoSQL >> MongoDB

Celkový počet návratů MongoDB je 0, pokud nejsou žádné výsledky

Pokud jsem správně pochopil, co chcete, můžete zkusit toto:

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

Aktualizace:
Chcete-li z výstupu získat více dokumentů, které byly na vstupu, je to možné pouze pomocí unwind operátor, který pracuje s poli, ale nemáte žádná pole, takže pokud vím, ve vašem případě není možné získat více dokumentů. Měli byste tedy po výsledku dotazu přidat nějakou logiku, abyste vytvořili nová data pro existující data s počtem 0 pro jiný typ buildResult...




  1. Spring Data RedisTemplate:Serializace hodnoty a hashValue

  2. Nelze připojit Redis Cluster v Elasticache k PHP pomocí knihovny phpredis

  3. Špatný výkon agregace vyhledávání

  4. doRedis s podivnou chybou připojení soketu v Ubuntu Linux, R a RStudio