我正在尝试使用$cond
在聚合$push
期间有条件地$group
多个整数到数字数组上而没有任何成功。这是我的代码:
Item.aggregate(
[
{
$group: {
_id: "$_id",
numbers: {
$push: {
$cond: {
if: { $gt: [ "$price.percent", 70 ] },
then: { $each: [10,25,50,70] },
else: null,
}
}
}
}
},
]
)
...
Mongo DB现在还没有为此设置,或者我看到这一切都错了吗?
答案 0 :(得分:3)
请在没有 if var tabBarController = self.viewControllers {
let indexToRemove = 2
if indexToRemove < tabBarController.count {
tabBarController.removeAtIndex(indexToRemove)
self.setViewControllers(tabBarController, animated: false)
}
}
的情况下试用,如下所示
$each
答案 1 :(得分:0)
你试过了吗:
Item.aggregate(
[
{
$group: {
_id: "$_id",
numbers: {
$push: {
$each: {
$cond: {
if: { $gt: [ "$price.percent", 70 ] },
then: [10,25,50,70],
else: null
}
}
}
}
}
},
]
)
答案 2 :(得分:0)
提供的答案会起作用,但只要执行 null
块,它们就会将 else
添加到数组中,最后您需要从实际数组中过滤掉 null
值( numbers
) 这是一个额外的步骤!
您可以使用 $$REMOVE 有条件地排除 MongoDB 的 $project
中的字段。
Item.aggregate(
[{
$group: {
_id: "$_id",
numbers: { $push: { $cond: [{ $gt: ["$price.percent", 70] }, [10, 25, 50, 70], '$$REMOVE'] } } // With $$REMOVE nothing happens on else
}
}]);
参考: $cond