在聚合中我有一个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"]
}
}
}
}
但它不起作用!我错了什么?感谢
答案 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