仅在满足条件时才按下

时间:2015-04-30 23:12:37

标签: mongodb

在聚合中我有一个group-clause:

  {  $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"]
                         }
                   }
               }
            }

但它不起作用!我错了什么?感谢

1 个答案:

答案 0 :(得分: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"]
                         }
                  }
            }
         }
   }

HTH,

Sandeepkumar Gupta