我正在推进我之前的问题MongoDB GroupBy
使用聚合函数后,我得到我想要的,现在我想向该聚合函数添加一些查询参数,并且查询应该应用于聚合的结果 即例如对于entity_id“123”,有4年val
“2010”, “2011”, “2012”, “2013”
在应用聚合函数后,按照上一个问题得到“2013”,实体ID为“123”,这是绝对正确的。
现在我想添加额外的查询,它应该像 - “entity_id”123“AND year”2013“AND”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 :(得分:1)
我从这个问题中理解的是你想要这样的东西。
> db.collection2.aggregate([
{
$sort: {
"year": 1
}
},
{
$group: {
_id: "$entity_id",
year: {
$max: "$year"
},
profit_val: {
$last: "$profit_val"
}
}
},
{
$match: {
"profit_val": {
"$gt": 10000
}
}
}
])