#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. Спасибо за ваш ответ!!