I have data structure from mongoDb v 3.2 I will try make sorting date by month and sorting within statistic array through aggregation-framework
Source data:
"monthStart" : "2015-11",
"monthEnd" : "2015-11",
"date" : ISODate("2016-03-09T09:06:58Z"),
"statistic" : [
{
"name" : "site1.com",
"ga" : "99999",
"data" : {
"desktop" : {
"users" : NumberLong(25),
"pageviews" : NumberLong(56789),
}
}
},
{
"name" : "site2.com",
"ga" : "102",
"data" : {
"desktop" : {
"users" : NumberLong(21),
"pageviews" : NumberLong(9399393),
}
}
},
{
"name" : "site3.com",
"ga" : "103",
"data" : {
"desktop" : {
"users" : NumberLong(103),
"pageviews" : NumberLong(9399393),
}
}
},
{
"monthStart" : "2015-12",
"monthEnd" : "2015-12",
"date" : ISODate("2016-03-09T09:08:39Z"),
"statistic" : [
{
"name" : "site1.com",
"ga" : "9999",
"data" : {
"desktop" : {
"users" : NumberLong(88),
"pageviews" : NumberLong(83838),
},
}
},
{
"name" : "site2.com",
"ga" : "8888",
"data" : {
"desktop" : {
"users" : NumberLong(75),
"pageviews" : NumberLong(77777777),
},
}
},
{
"name" : "site3.com",
"ga" : "103",
"data" : {
"desktop" : {
"users" : NumberLong(25),
"pageviews" : NumberLong(9399393),
}
}
},
}
]
How I can get structure sorting within array statistic?
Expected result :
"monthStart" : "2015-11",
"monthEnd" : "2015-11",
"date" : ISODate("2016-03-09T09:06:58Z"),
"statistic" : [
{
"name" : "site3.com",
"ga" : "103",
"data" : {
"desktop" : {
"users" : NumberLong(103),
"pageviews" : NumberLong(9399393),
}
}
},
{
"name" : "site2.com",
"ga" : "102",
"data" : {
"desktop" : {
"users" : NumberLong(21),
"pageviews" : NumberLong(9399393),
}
}
},
{
"name" : "site1.com",
"ga" : "99999",
"data" : {
"desktop" : {
"users" : NumberLong(25),
"pageviews" : NumberLong(56789),
}
}
},
{
"monthStart" : "2015-12",
"monthEnd" : "2015-12",
"date" : ISODate("2016-03-09T09:08:39Z"),
"statistic" : [
{
"name" : "site3.com",
"ga" : "103",
"data" : {
"desktop" : {
"users" : NumberLong(201),
"pageviews" : NumberLong(9399393),
}
}
},
{
"name" : "site1.com",
"ga" : "9999",
"data" : {
"desktop" : {
"users" : NumberLong(88),
"pageviews" : NumberLong(83838),
},
}
},
{
"name" : "site2.com",
"ga" : "8888",
"data" : {
"desktop" : {
"users" : NumberLong(75),
"pageviews" : NumberLong(77777777),
},
}
},
}
]
I tried make, but it is didn't work:
db.TrafficStatistic.aggregate([
{ "$unwind": "$statistic" },
{ "$sort": { "statistic.data.desktop.users": 1 } } ])