Как $ count и $ total несколько полей на основе $ group

Добрый день всем вам. У меня есть образцы данных, которые я хочу сгруппировать.

{ 
"_id" : ObjectId("5b8de8e635da281e1cb6279b"), 
"CountryName" : "Spain", 
"SmartClassification": "Special Focus"
}
{ 
"_id" : ObjectId("5b8de8e635da281e1cb6279c"), 
"CountryName" : "Malaysia", 
"SmartClassification": "Investment Focus"
}
{ 
"_id" : ObjectId("5b8de8e635da281e1cb6279c"), 
"CountryName" : "Nigeria", 
"SmartClassification": "Fundamental Focus"
}

Вот иллюстрация того, что я хочу показать. Как $ count и $ total несколько полей на основе $ group

Я хочу $ сгруппировать данные выше по «CountryName» и общему количеству их «SmartClassification». Для меня это сложно, потому что я относительно новичок в MongoDB. Как я могу воспроизвести иллюстрацию выше?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать ниже агрегирование

В основном вам нужно использовать этап $group здесь несколько раз.

db.collection.aggregate([
  { "$group": {
    "_id": {
      "CountryName": "$CountryName",
      "SmartClassification": "$SmartClassification"
    },
    "count": { "$sum": 1 }
  }},
  { "$group": {
    "_id": "$_id.CountryName",
    "data": {
      "$push": {
        "SmartClassification": "$_id.SmartClassification",
        "count": "$count"
      }
    }
  }}
])

Данные, которые вы получите, будут примерно такими

const myData = [
  { "_id": "Spain", "data": [{ "SmartClassification": "Special Focus", "count": 1 }] },
  { "_id": "Malaysia", "data": [{ "SmartClassification": "Investment Focus", "count": 1 }] },
  { "_id": "Nigeria", "data": [{ "SmartClassification": "Fundamental Focus", "count": 2 }] }
]

Теперь вы можете перебирать данные и отображать что-то подобное на своей html-странице.

myData.map((country) => {
  return(
    <div>{country._id}</div>
    {country.data.map((da) => {
      return(
        <div>{da.SmartClassification}</div>
        <div>{da.count}</div>
      )
    })}
  )
})

Привет @Anthony. Как я могу заставить вывод не отображать _id, а вместо этого отображать два свойства?

Nevertheless 05.09.2018 04:58

это даст вам данные, сгруппированные по CountryName и SmartClassification, затем вы можете перебрать вывод и показать, как вы отображаете на скриншоте

Ashh 05.09.2018 05:02

Большое спасибо. Это работает, я могу перебрать их все.

Nevertheless 05.09.2018 05:17

Другие вопросы по теме