2015-04-30 2 views
0

В совокупности у меня есть группа-пункт:Нажмите, только если условие выполняется

{ $group: { 
      _id: { town_id: "$_id.town" }, 
      houses_data: { $push: 

       { house_id: "$_id.house_id", 
        price: { 
         $divide: ["$sum", "$total"] 
         } 
        } 
      } 
     } 
    } 

Выход выглядит следующим образом:

{town_id: 13, houses_data: [ 
    {house_id: 5, price: 32}, 
    {house_id: 2, price: 12} 
    ] 
} 

Теперь я хотел бы ограничить вывод от houses_data

только для записей, где house_id > 3.

Я хочу, чтобы этот вывод:

{town_id: 13, houses_data: [ 
    {house_id: 5, price: 32} 
    ] 
} 

Я пытался добавить условие перед отправкой в ​​массив:

   houses_data: { 
       if: { 
        "$_id.house_id": {$gt: 3} 
       }, 
       then: { 
       $push: 
        { house_id: "$_id.house_id", 
        price: { 
         $divide: ["$sum", "$total"] 
         } 
        } 
       } 
      } 

Но это не работает! Что я не так? Спасибо

+0

Вы можете разместить свой образец документа? – Yogesh

ответ

0

Вы можете попробовать $ match, как показано ниже.

{ 
$match:{_id.house_id : {$gt: 3}}, 

$group: { 
      _id: { town_id: "$_id.town" }, 
      houses_data: { $push: 

       { house_id: "$_id.house_id", 
        price: { 
         $divide: ["$sum", "$total"] 
         } 
        } 
      } 
     } 
    } 

НТН,

Sandeepkumar Гупта

Смежные вопросы