Как использовать сумму с агрегатом Mongodb - PullRequest
0 голосов
/ 29 января 2020

У меня есть дата, как показано ниже в mongoDB.

[
  {
  condition: {
    test: [
           { ...},
           { ...},
           { ...}
           ]
  }
  },
  {
  condition: {
    test: [
           { ...},
           { ...}
           ]
  }
  },
  ...
]

И я хочу получить сумму теста. Например, («количество тестов» - 1) и сложить их.
В этом случае (3 - 1) + (2 - 1) = 3. Как я могу сделать это значение суммы за один раз, используя один агрегат Mongodb?
Большое спасибо за чтение.

1 Ответ

1 голос
/ 29 января 2020
db.collectionName.aggregate([
  {
    $group:
      { _id: null,
        totalSize:
          { $sum:
              { $add:
                  [{ $size: "$test"},-1]
              }
          }
      }
  }
])

Проверено по приведенным ниже данным

/* 1 */
{
    "_id" : ObjectId("5e31333fab4013230264d786"),
    "condition" : "testCase1",
    "test" : [ 
        ISODate("2020-01-29T07:26:42.491Z"), 
        ISODate("2020-01-29T07:27:42.491Z")
    ]
}

/* 2 */
{
    "_id" : ObjectId("5e313346ab4013230264d787"),
    "condition" : "testCase2",
    "test" : [ 
        ISODate("2020-01-29T07:25:42.491Z"), 
        ISODate("2020-01-29T07:24:42.491Z"), 
        ISODate("2020-01-29T07:23:42.491Z")
   ]
}

Вывод:

{
  "_id" : null,
  "totalSize" : 3.0
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...