I want generate report from mongodb. I have a aggregation which generated:
[{"_id": {
"m": 1,
"y": 2020
},
"meals": [
{
"name": "Sandwich",
"servings": 2
},
{
"name": "Fish",
"servings": 7
},
{
"name": "Pizza",
"servings": 3
},
{
"name": "Beef",
"servings": 3
},
{
"name": "Soup",
"servings": 3
}]},
{"_id": {
"m": 12,
"y": 2018
},
"meals": [
{
"name": "Beef",
"servings": 1
},
{
"name": "Spaghetti",
"servings": 2
}]}]
I need to get 3 elements where servings the largest and sort them. If elements are not three, just sort. For example:
[{"_id": {
"m": 1,
"y": 2020
},
"meals": [
{
"name": "Fish",
"servings": 7
},
{
"name": "Pizza",
"servings": 3
},
{
"name": "Beef",
"servings": 3
}]},
{"_id": {
"m": 12,
"y": 2018
},
"meals": [
{
"name": "Spaghetti",
"servings": 2
},
{
"name": "Beef",
"servings": 1
}
]}]
I can't use find()
, because I want to do this in aggregation. I tried to use $filter
, but I am doing something wrong.