2015-03-03 122 views
0

我正在推动实施我刚才的问题MongoDB GroupByMongoDB的GROUPBY汇总和另外的查询一起

使用聚合函数,我得到我想要的东西之后,现在我想一些查询参数添加到聚合函数和查询应该是施加到导致的,即例如用于ENTITY_ID骨料 “123”,也有4年VAL

“2010”,“2011”,“2012”,“2013”​​

施加聚集函数按照后最后一个问题得到“2013”​​,实体ID为“123”,这是绝对正确的。

现在我想添加额外的查询,它应该是这样的 - “ENTITY_ID‘123’和年份‘2013’和‘extra_query ENTITY_ID‘123’

我试着使用$的比赛,但它正在采取的。’和额外的查询。

我在我的DB 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,但这个结果是错误的,因为我只想看到这个条件只与实体的最大年份。 inshort我想组最大年份,我已经做了,现在给出的答案现在我想添加查询到这个“分组”结果只。

我希望这会让你明白我在找什么。

+0

哇我只是把一个文本球分成段,使它可读,它仍然没有任何意义。你在这里问什么? – 2015-03-03 07:00:31

+0

@NeilLunn我已经更新了这个问题,希望这会帮助你理解这个问题。 – user1673091 2015-03-03 07:13:02

+0

增加的东西不是很清楚。你是说你想要找到一个“profit_val”> 10000且“年”= 2013的文档吗?看不清这与你提出的最后一个问题有甚么关系,或者它将如何应用于此。如果engish不是您的语言,您可能需要其他人的帮助来撰写您的问题。我现在确实没有清楚说明任何事情。 – 2015-03-03 07:20:46

回答

1

我从这个问题所理解的是你想要的东西。

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