2017-07-11 3 views
0

Ich versuche, eine Sub-Gruop aus einer Abfrage mit Nodejs und Mungo zu bekommen. Das, was ich zu tun habe versucht, ist die folgende: Ich habe diese Sammlung: enter image description here enter image description hereUntergruppe Mongoose

Ich benötige alle Dokumente mit der gleichen ‚Absicht‘ zu zählen und Gruppe und eine Untergruppe mit der ‚Einheit machen "Wert, so weit habe ich diesen Lauf: try {

//We first get the total interactions from all workspace 
    let workspace = await Interaction.aggregate([ 
     { $match: { dateAdded: { $gte: todayStart, $lt: todayEnd }, workspace: workspaceID } }, 
     { $group: { _id: "$workspace", data: { $sum: 1 } } }, 
     { $sort: { _id: 1 } } 
    ]).exec(); 

    //We then get the total results from conversations 
    let results = await Interaction.aggregate([ 
     { $match: { dateAdded: { $gte: todayStart, $lt: todayEnd }, workspace: workspaceID } }, 
     { $group: { _id: '$intent', data: { $sum: 1 } } }, 
     { $sort: { _id: 1 } } 
    ]).exec() 
    //workspaceItems = workspace.map(function (Interaction) { return Interaction._id; }); 

    return res.json({ 
     total: workspace, 
     result: results 
    }) 

} catch (err) { 
    console.log(err); 
    return res.status(500).send(err) 
} 

Das Ergebnis wird wie folgt aussehen:

{ 
"total": [ 
    { 
     "_id": "Business", 
     "data": 23 
    } 
], 
"result": [ 
    { 
     "_id": "N/A", 
     "data": 2 
    }, 
    { 
     "_id": "PRODUCTO_BENEFICIOS", 
     "data": 3 
    }, 
    { 
     "_id": "PRODUCTO_DESCRIPCION", 
     "data": 10 
    }, 
    { 
     "_id": "REPORTE_TARJETA_PERDIDA", 
     "data": 1 
    }, 
    { 
     "_id": "REQUISITOS", 
     "data": 7 
    } 
] 

}

Ich brauche das Ergebnis auf diese Weise:

{ 
"total": [ 
    { 
     "_id": "Business", 
     "data": 23 
    } 
], 
"result": [ 
    { 
     "_id": "N/A", 
     "data": 2 
    }, 
    { 
     "_id": "PRODUCTO_BENEFICIOS", 
     "entities: [{"TARJETAS","PROMOCIONES"."ETC..."}], 
     "data": 3 
    }, 
    { 
     "_id": "PRODUCTO_DESCRIPCION", 
     "entities: [{"TARJETAS","PROMOCIONES"."ETC..."}], 
     "data": 10 
    }, 
    { 
     "_id": "REPORTE_TARJETA_PERDIDA", 
     "entities: [{"TARJETAS","PROMOCIONES"."ETC..."}], 
     "data": 1 
    }, 
    { 
     "_id": "REQUISITOS", 
     "entities: [{"TARJETAS","PROMOCIONES"."ETC..."}], 
     "data": 7 
    } 
] 

}

ich klar, lass es mich Hoffnung zu sein, wenn Sie wissen, wie diese Mungo mit zu tun. Vielen Dank im Voraus.

Antwort

1

versuchen, die zweite Abfrage zu ändern, um folgende

let results = await Interaction.aggregate([ 
    { $match: { dateAdded: { $gte: todayStart, $lt: todayEnd }, workspace: workspaceID } }, 
    { $group: { _id: '$intent', entities: {$push: "$entity"}, data: { $sum: 1 } } }, 
    { $sort: { _id: 1 } } 
]).exec() 

, wenn Sie eine eindeutige Liste von Entitäten möchten, können Sie $addToSet anstelle von $push