MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tổng số kết quả trả về trong MongoDB là 0 nếu không có kết quả

Nếu tôi hiểu chính xác bạn muốn gì, bạn có thể thử cách này:

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

Cập nhật:
Bạn muốn nhận được từ đầu ra nhiều tài liệu hơn đã được nhập vào, chỉ có thể thực hiện được với unwind toán tử hoạt động với mảng, nhưng bạn không có bất kỳ mảng nào, vì vậy tôi biết không thể lấy thêm tài liệu trong trường hợp của bạn. Vì vậy, bạn nên thêm một số logic sau kết quả truy vấn để tạo dữ liệu mới cho các ngày hiện có với số lượng 0 cho một loại buildResult khác ...




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - trợ giúp với một truy vấn PHP

  2. Trình điều khiển MongoDB C #, truy vấn bởi một phần tử mảng sử dụng regex

  3. MongoDB - diễn giải đầu ra giải thích cụ thể

  4. nodejs - mongodb native tìm tất cả tài liệu

  5. MongoDB riêng biệt ()