Así es como es mi matriz PREGUNTA de muestra:
[ { "subject": "app development", "topic": "dart", "subtopic": "flutter2", "questionType": "EASY", "questionTitle": "how angular works", }, { "subject": "app development", "topic": "dart", "subtopic": "flutter", "questionType": "EASY", "questionTitle": "how angular works", }, { "subject": "app development", "topic": "javascript", "subtopic": "react native", "questionType": "EASY", "questionTitle": "how angular works", }, ] Necesito agrupar el campo de subject y el topic en una matriz.
Así es como quiero:
{ "subject": "web development", "topics":[{ topicName:"javascript", subtopics:[ "react native, "flutter" ] }] }Estoy tratando de hacerlo de esta manera, pero este error:
Aparece "Expresión no reconocida '$push'"
{ $group: { _id: "$subject", topics: { $addToSet: { title: "$topic", sub: {$push:"$subtopic"}, }, }, }, }, Necesito obtener una variedad de subjects agrupados y topics y subtopics .
$group no puede admitir operaciones anidadas $addToSet y $push al mismo tiempo, debe dividir ambas operaciones en diferentes etapas de $group ,
$group por subject y topic y construir la matriz única de subtopic usando $addToSet$group solo por subject y construir la matriz de topics$project para dar formato y mostrar los campos obligatorios [ { $group: { _id: { subject: "$subject", topic: "$topic" }, subtopic: { $addToSet: "$subtopic" } } }, { $group: { _id: "$_id.subject", topics: { $push: { topic: "$_id.topic", sub: "$subtopic" } } } }, { $project: { _id: 0, subject: "$_id", topics: 1 } } ]