Атласные диаграммы Mongodb — Показывают сгруппированное количество в разных столбцах

#mongodb #mongodb-atlas #mongodb-charts

Вопрос:

У меня есть коллекция «ofertas» в моей БД, и данные имеют такую структуру:

 {
    "_id" : ObjectId("6057a995e5a26c119d254f35"),
    "empresa" : {
        "direccion" : {
            "direccion" : "concepcion arenal",
            "cp" : "36950",
            "provincia" : "pontevedra",
            "poblacion" : "Moaña",
            "pais" : "espana"
        },
        "nombre" : "caru sl"
    },
    "nombre_oferta" : "Offer Name",
    "referencia_interna" : "111222",
    "fecha_publicacion" : ISODate("2021-03-21T23:00:00.000Z"),
    "fecha_caducidad" : ISODate("2021-04-19T22:00:00.000Z"),
    "descripcion" : "Offer description",
    "estado" : "caducada",
    "pagada" : true,
    "userId" : "XXX",
    "candidatos" : [],
    "createdAt" : ISODate("2021-03-21T20:16:21.438Z"),
    "updatedAt" : ISODate("2021-04-20T22:08:14.221Z"),
    "__v" : 0
}
 

И у меня есть этот запрос MongoDB:

 [
    { $sortByCount: "$empresa.nombre" },
    {$group: {
         _id: 0,
         empresas_ofertas:{$push: {
             empresa:"$_id",
             ofertas:"$count",
         }},
    }},
    { $unwind: "$empresas_ofertas"}
]
 

Это группирует количество «офертов», как это:

результат запроса

И я хочу показать данные в атласных диаграммах MongoDB в виде отдельных столбцов с количеством «ofertas» для каждого объекта массива «empresas_ofertas», но на диаграмме отображается только один столбец с общим количеством «ofertas»:

атласная карта

Я изменил агрегат по оси Y с СУММЫ на КОЛИЧЕСТВО ПО ЗНАЧЕНИЮ, но он группирует данные с элементами, имеющими одинаковое количество «ofertas». Что я пытаюсь сделать, так это показать все объекты в массиве «empresas_ofertas» с количеством ofertas: первый столбец должен быть 60 (значение IXAS SL), вторые столбцы должны быть 53 (caru sl)…

Что я делаю не так?

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

1. не могли бы вы, пожалуйста, опубликовать свои данные в виде фрагментов. Мы рекомендуем не публиковать файлы img

2. Да, конечно, я добавил это к вопросу

Ответ №1:

ШАГ 1 — СОЗДАНИЕ ЗАПРОСА

Ваш запрос хорош. Он вернет данные, необходимые для создания запрошенной диаграммы. Я протестировал его, и вы получите в качестве ответа данные в этом формате:

 [
  {
    "_id": 0,
    "empresas_ofertas": {
      "empresa": "caru sl 2",
      "ofertas": 2
    }
  },
  {
    "_id": 0,
    "empresas_ofertas": {
      "empresa": "caru sl 1",
      "ofertas": 1
    }
  }
]
 

Вот рабочий пример: https://mongoplayground.net/p/Gpn9trcgfsK

ШАГ 2 — ОПРЕДЕЛЕНИЕ ОСЕЙ

Как видно на вашем рисунке, в списке меню слева у вас есть _id поле и empresas_ofertas поле объекта с вложенными empresa ofertas полями и. Это структура данных, возвращаемая из запроса.

Справа от этого списка есть раздел, в котором вы должны определить X Axis и Y Axis из доступных данных ( _id , empresas_ofertas.empresa и empresas_ofertas.ofertas ). Обратите внимание, что прямо сейчас вы вообще не указали X Axis , как вы можете видеть на изображении.

Все , что вам нужно сделать, это перетащить empresa вложенное поле в и X Axis ofertas в Y Axis . Это отобразит запрошенную вами диаграмму.

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

1. Да!! Это сделало свое дело. Только один момент, чтобы показать данные так, как ожидалось, мне пришлось поместить данные по оси в обратном порядке: empresa по оси X и ofertas по оси Y. Спасибо за ваш ответ!!