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

Обобщение с брой поддокументи, съответстващи на условието и групиране

Трябваше да прочетете правилно отговора, тъй като вече имаше друг алтернативен списък и обяснение защо очакваният резултат, който искате от този, който сте използвали, би бил различен.

Вместо това вие искате това, което зачита възможните множествени „УДАРЕНО“ или „НЕУДАЛО“:

  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) {

    }
  );

Което е нещо като "комбинация" от подходи. Първият е да получите "последния" по време на изпълнение, както очаквахте. Следващото е да разбиете масива и този път всъщност да „сумирате“ възможните случаи на преминаване или неуспех, вместо просто да запишете 1 за преминаване или неуспех в масива се отчитат действителните "преминаване" или "неуспех".

С резултати:

{
        "_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. Филтриране на документи по разстояние, съхранени в документа с $near

  2. Django + Pymongo създава връзка за потвърждение на акаунт

  3. Създавайте, четете, актуализирайте, изтривайте данни с помощта на Node.js - Mongoose

  4. Заменете вградения документ с помощта на драйвер Mongo C# 2.0

  5. Грешка при актуализиране на документа Mongoose