Jeg kan se problemet. Folk søger efter og finder dette stackoverflow-svar:
Det er forkert, da det aldrig "rekonstruerer" arrayet.
Det gør du med $group
og $push
, og da du grupperer, vil du have $first
for de andre felter i det ønskede dokument:
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" }
}}
])
Bemærk også $sort
anvendes på både "_id"
og det andet felt til at sortere. Dette er så sorteringen anvendes pr. dokument og er vigtig, når dokumentdetaljerne sættes sammen igen i $group
.
Nu ser dokumentet ud som det gjorde, men denne gang er array-medlemmerne sorteret.