агрегация, чтобы получить список подсчета - PullRequest
1 голос
/ 28 февраля 2020

Как мне получить список для подсчета всех кодов глав для этих данных?

[
    {
        catId: 101,
        chapter: [
            {
                id: '1234',
                title: 'Title 1',
                code: 'X12.3'
            },
            {
                id: 'abcd',
                title: 'Title 2',
                code: 'X12.4'
            }
        ]
    },
    {
        catId: 102,
        chapter: [
            {
                id: 'abcd',
                title: 'Title 2',
                code: 'X12.4'
            }
        ]
    }
]

В этом простом примере я ожидал бы что-то вроде

2 - X12.4
1 - X12.3

Я думаю, мне нужен агрегация вроде:

db.collection.aggregate([
  {},
  {
    $group: {
      _id: '$code',
      Datasets: { $sum: 1 }
    }
  }
])

1 Ответ

1 голос
/ 28 февраля 2020

Перед группировкой сначала необходимо $ размотать массив глав.

db.collection.aggregate([
  {
    $unwind: "$chapter"
  },
  {
    $group: {
      _id: "$chapter.code",
      count: {
        $sum: 1
      }
    }
  }
])

Это даст следующий результат:

[
  {
    "_id": "X12.4",
    "count": 2
  },
  {
    "_id": "X12.3",
    "count": 1
  }
]

Детская площадка

...