я принимаю вперед мой предыдущий вопрос MongoDB GroupBy
После использования агрегатной функции я получаю то, что хочу, теперь я хочу добавить некоторые параметры запроса к этой агрегированной функции, и запрос должен применяться к результату агрегации, например, для entity_id "123", есть 4 года val
"2010", "2011", "2012", "2013"
после применения совокупной функции в соответствии с последним вопросом получите "2013" с идентификатором объекта "123", что является абсолютно правильным.
Теперь я хочу добавить дополнительный запрос, который должен быть похож - "entity_id" 123 "И год" 2013 "и" extra_query ".
Я пробовал использовать $ match, но он принимал за запрос "entity_id" 123 AND Extra.
У меня есть 2 коллекции в моем db
сборник 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, НО этот результат неверен, так как я хочу посмотреть это условие только с максимальным годом объекта. Мне хотелось бы добавить группу к максимальному году, который я уже сделал, ответьте здесь, теперь я хочу добавить запрос только к этому "сгруппированному" результату.
Надеюсь, это заставит вас понять, что я ищу.
То, что я понял из вопроса, это то, что вы хотите что-то подобное.
> db.collection2.aggregate([
{
$sort: {
"year": 1
}
},
{
$group: {
_id: "$entity_id",
year: {
$max: "$year"
},
profit_val: {
$last: "$profit_val"
}
}
},
{
$match: {
"profit_val": {
"$gt": 10000
}
}
}
])