MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB обобщава върнатия брой от 0, ако няма резултати

Ако правилно разбирам какво искате, можете да опитате това:

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

Актуализация:
Искате да получите от изхода повече документи, които са били във входа, това е възможно само с unwind оператор, който работи с масиви, но вие нямате масиви, така че, както знам, е невъзможно да получите повече документи във вашия случай. Така че трябва да добавите някаква логика след резултата от заявката, за да създадете нови данни за съществуващи дати с 0 брой за друг тип buildResult...




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose запазва всички параметри от тялото на заявката

  2. Каква е разликата между методите insert(), insertOne() и insertMany()?

  3. Как да сортирате резултатите от заявката на mongodb въз основа на поддокументи

  4. не може да се свърже с mongodb, хостван на отдалечен сървър, използвайки monk

  5. Java MongoDB:Каква е разликата между com.mongodb.DB и com.mongodb.client