Vidím problém. Lidé hledají a nacházejí tuto odpověď stackoverflow:
Je to špatně, protože nikdy „nerekonstruuje“ pole.
Uděláte to pomocí $group
a $push
, a protože seskupujete, budete chtít $first
pro ostatní pole v dokumentu, který chcete:
db.TrafficStatistic.aggregate([
{ "$unwind": "$statistic" },
{ "$sort": { "_id": 1, "statistic.data.desktop.users": 1 } },
{ "$group": {
"_id": "$_id",
"monthStart" : { "$first": "$monthStart" },
"monthEnd" : { "$first": "$monthEnd" },
"date" : { "$first": "$date" },
"statistic": { "$push": "$statistic" }
}}
])
Všimněte si také $sort
se použije na "_id"
a další pole k třídění. Je to proto, aby se řazení použilo na dokument a je důležité, když jsou podrobnosti dokumentu sestaveny zpět do $group
.
Nyní dokument vypadá stejně jako dříve, ale tentokrát jsou členy pole seřazeny.