Ich möchte die Ergebnisse von und aggregate, $ Gruppe und $ push bestellen und begrenzen.
Sagen wir, dass ich ein System mit Online-Bestellungen habe. Und ich möchte jedes Jahr eine Liste mit 3 bestbestellten Produkten erhalten, sortiert nach Jahr und Produktmenge.
[
{
year: 2016,
products: [
{
product: 'product D',
amount: 1000
},
{
product: 'product C',
amount: 300
},
{
product: 'product B',
amount: 200
}
]
},
{
year: 2015,
products: [
{
product: 'product G',
amount: 800
},
{
product: 'product B',
amount: 400
},
{
product: 'product A',
amount: 300
}
]
},
...
]
In Mungo kann ich Daten nach Jahr:
year product amount
2016 product A 100
2016 product B 200
2016 product C 300
2016 product D 1000
2016 product E 50
2015 product F 100
2015 product G 800
2015 product A 300
2015 product B 400
2015 product C 100
2014 product A 70
2014 product B 50
2014 product G 500
2014 product C 600
2014 product D 900
Das zurückgegebene Objekt sollte so etwas wie dieses
Orders.model
.aggregate([
{
$group: {
_id: {
'year': '$year',
},
products: {
$push: {
product: '$product',
amount: '$amount'
}
}
}
},
{
$project: {
_id: 0,
year: '$_id.year',
products: '$products'
}
}
])
Es gibt mir alle Produktnamen und die Mengen und nicht sortiert.
Von Ich weiß nicht, wie gruppierte Daten zu sortieren und zu begrenzen. Ich versuchte $ sort, $ limit, $ ohne Erfolg.