MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zagregowana liczba zwrotów MongoDB równa 0, jeśli nie ma wyników

Jeśli dobrze rozumiem, czego chcesz, możesz spróbować tego:

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

Aktualizacja:
Chcesz uzyskać z wyjścia więcej dokumentów, które były na wejściu, jest to możliwe tylko za pomocą unwind operator, który działa z tablicami, ale nie masz żadnych tablic, więc z tego co wiem, nie da się uzyskać więcej dokumentów w twoim przypadku. Powinieneś więc dodać trochę logiki po wyniku zapytania, aby utworzyć nowe dane dla istniejących dat z liczbą 0 dla innego typu buildResult...




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak ustawić $setDifference w tablicy i obiekcie za pomocą Mongo DB?

  2. MongoDB z poddokumentami limitu Mongoose

  3. Zrozumienie znajdowania w węźle/Mongo

  4. Jak zwrócić tylko wartość w MongoDB?

  5. odpowiednik sterownika Java dla Object.bsonsize(doc) powłoki JavaScript?