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

Tổng hợp với số lượng tài liệu phụ phù hợp với điều kiện và nhóm

Bạn nên đọc câu trả lời một cách chính xác, vì đã có một danh sách thay thế khác và lời giải thích về lý do tại sao kết quả mong đợi bạn muốn từ kết quả bạn đã sử dụng lại khác.

Thay vào đó, bạn muốn cái này, tuân theo nhiều "PASS" hoặc "FAIL" có thể xảy ra:

  Model.aggregate(
    [
      { "$sort": { "executionProject": 1, "runEndTime": 1 } },
      { "$group": {
        "_id": "$executionProject",
        "suiteList": { "$last": "$suiteList" },
        "runEndTime": { "$last": "$runEndTime" }
      }},
      { "$unwind": "$suiteList" },
      { "$group": {
        "_id": "$_id",
        "suite-pass": { 
          "$sum": {
            "$cond": [
              { "$eq": [ "$suiteList.suiteStatus", "PASS" ] },
              1,
              0
            ]
          }
        },
        "suite-fail": { 
          "$sum": {
            "$cond": [
              { "$eq": [ "$suiteList.suiteStatus", "FAIL" ] },
              1,
              0
            ]
          }
        },
        "runEndTime": {"$first": "$runEndTime"}
      }},
      { "$sort": { "runEndTime": 1 }}
    ],
    function(err,result) {

    }
  );

Đó là một "sự kết hợp" của các phương pháp. Đầu tiên là lấy "cuối cùng" của runTime như bạn mong đợi. Tiếp theo là chia nhỏ mảng và lần này thực sự "tổng hợp" các khả năng có thể đạt hoặc không đạt, thay vì chỉ ghi lại một 1 đối với đạt hoặc không đạt trong mảng, "đạt" hoặc "không đạt" thực tế sẽ được tính.

Với kết quả:

{
        "_id" : "Project1",
        "suite-pass" : 0,
        "suite-fail" : 1,
        "runEndTime" : ISODate("2015-08-19T09:46:31.108Z")
}
{
        "_id" : "Project2",
        "suite-pass" : 2,
        "suite-fail" : 0,
        "runEndTime" : ISODate("2015-08-19T11:09:52.537Z")
}
{
        "_id" : "Project3",
        "suite-pass" : 0,
        "suite-fail" : 1,
        "runEndTime" : ISODate("2015-08-19T11:18:41.460Z")
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Group theo trường, đếm nó và sắp xếp nó desc

  2. Cách cấu hình MongoMapper và ActiveRecord trong cùng một Dự án Ruby Rails

  3. mongoDB:định dạng $ dateToString để hiển thị thời gian trong khoảng thời gian 15 phút

  4. Chiến lược đăng ký / xuất bản Meteor cho các bộ sưu tập phía máy khách duy nhất

  5. nhận các Giá trị riêng biệt với Dữ liệu được Sắp xếp