2015-03-03 2 views
0

я беру вперед мой ранее вопрос MongoDB GroupByMongoDB GroupBy Совокупный и добавление запрос вместе

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

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

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

Теперь я хочу, чтобы добавить дополнительный запрос, который должен быть как - «ENTITY_ID„123“и год„2013“и„extra_query ENTITY_ID „123“

Я попытался с помощью $ спичку, но она принимает, как.“ и Extra запрос.

у меня есть 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

Ничего себе, я просто сломал один шар текста в параграфы, чтобы сделать его читаемым, и это все еще не имеет смысла. Что вы спрашиваете здесь? –

+0

@NeilLunn Я обновил вопрос, надеюсь, что это поможет вам понять вопрос. – user1673091

+0

Не совсем понятно для дополнений. Вы хотите найти документ с «profit_val»> 10000, а также «year» = 2013? Не вижу, что это даже отдаленно связано с последним вопросом, который вы задали, или тем, как он будет применяться здесь. Если engish - это не ваш язык, вам может понадобиться помощь от кого-то другого, чтобы написать свой вопрос. На самом деле я ничего не могу сказать прямо сейчас. –

ответ

1

Что я понял из вопроса, вы хотите что-то вроде этого.

> db.collection2.aggregate([ 
    { 
     $sort: { 
      "year": 1 
     } 
    }, 
    { 
     $group: { 
      _id: "$entity_id", 
      year: { 
       $max: "$year" 
      }, 
      profit_val: { 
       $last: "$profit_val" 
      } 
     } 
    }, 
    { 
     $match: { 
      "profit_val": { 
       "$gt": 10000 
      } 
     } 
    } 
]) 
Смежные вопросы