Как вернуть только длину массива в mongodb?

#mongodb

#mongodb

Вопрос:

У меня есть программа, в которой задачи выполняются «пакетами». Представление моих документов на верхнем уровне выглядит следующим образом:

 {
  _id: "xxx",
  status: "done",
  startedAt: 123456,
  finishedAt: 789101112,
  tasks: [...] // Huge array of deeply nested objects
}
  

Возможно ли создать запрос для mongodb, который возвращает только длину tasks массива в этом примере?

Желаемый результат:

 {
  _id: "xxx",
  status: "done",
  startedAt: 123456,
  finishedAt: 789101112,
  numTasks: 9999
}
  

Заранее благодарю вас за любые советы, которые вы можете дать.

Комментарии:

1. docs.mongodb.com/manual/reference/operator/aggregation/size

Ответ №1:

Вы можете использовать $size

 db.collection.aggregate([
  {
    $addFields: {
      numTasks: {
        "$size": "$tasks"
      }
    }
  }
])
  

Рабочая игровая площадка Mongo

Комментарии:

1. В точку! Спасибо за ваш совет. И спасибо за ссылку на игровую площадку mongo, это будет огромной помощью в будущем!