Gebruik $facet
pijplijnfase om meerdere aggregatiepijplijnen binnen één enkele fase op dezelfde set invoerdocumenten te verwerken. In uw geval moet u de tellingen afzonderlijk optellen en vervolgens de twee resultaten samenvoegen en de uiteindelijke optellingen berekenen.
Dit kan worden aangetoond door de volgende pijplijn uit te voeren:
db.collection.aggregate([
{ "$match": { "userid": "123" } },
{
"$facet": {
"groupByPage": [
{ "$unwind": "$page" },
{
"$group": {
"_id": "$page",
"count": { "$sum": 1 }
}
}
],
"groupByNewPage": [
{ "$unwind": "$newpage" },
{
"$group": {
"_id": "$newpage",
"count": { "$sum": 1 }
}
}
]
}
},
{
"$project": {
"pages": {
"$concatArrays": ["$groupByPage", "$groupByNewPage"]
}
}
},
{ "$unwind": "$pages" },
{
"$group": {
"_id": "$pages._id",
"count": { "$sum": "$pages.count" }
}
},
{ "$sort": { "count": -1 } }
], function(error, data){
if (error) {
console.log(error);
} else {
console.log(data);
}
)