Mongodb Groupby Агрегирование и сложение запросов вместе

я продолжаю свой предыдущий вопрос MongoDB GroupBy

После использования функции агрегата я получаю то, что хочу, теперь я хочу добавить некоторые параметры запроса в эту функцию агрегата, и запрос должен быть применен к результату агрегата.
например, для entity_id «123» существует 4 года

«2010», «2011», «2012», «2013»

после применения агрегатной функции по последнему вопросу получим «2013» с идентификатором сущности «123», что абсолютно правильно.

Теперь я хочу добавить дополнительный запрос, который должен выглядеть так: «entity_id» 123 «И год» 2013 «И» extra_query «.

Я попытался использовать $ match, но он принимал как «entity_id» 123 И дополнительный запрос.

у меня есть 2 коллекции в моем БД

коллекция 1.

{
"entity_id":123,
"added_by":"a",
},
{
"entity_id":321,
"added_by":"b",
},

и коллекция 2

{
"entity_id":123,
"year":"2014",
"profit_val":2000,
},
{
"entity_id":123,
"year":"2013",
"profit_val":1000,
},
{
"entity_id":123,
"year":"2012",
"profit_val":500,
},
{
"entity_id":123,
"year":"2011",
"profit_val":100000,
},

поэтому, когда я ищу «profit_val»> 10000, я получаю результат как «entity_id» = 123, НО этот результат неправильный, так как я хочу посмотреть это условие только с максимальным годом объекта.
если я хочу сгруппировать по максимальному году, что я уже сделал, ответ здесь и сейчас я хочу добавить запрос только к этому «сгруппированному» результату.

Я надеюсь, что это поможет вам понять, что я ищу.

0

Решение

Из вопроса я понял, что ты хочешь что-то подобное.

> db.collection2.aggregate([
{
$sort: {
"year": 1
}
},
{
$group: {
_id: "$entity_id",
year: {
$max: "$year"},
profit_val: {
$last: "$profit_val"}
}
},
{
$match: {
"profit_val": {
"$gt": 10000
}
}
}
])
1

Другие решения

Других решений пока нет …