use*_*780 6 mongoose mongodb node.js express mongodb-query
我试图在聚合期间$cond有条件地将$push多个整数放入一个数字数组中,$group但没有成功。这是我的代码:
Item.aggregate(
[
{
$group: {
_id: "$_id",
numbers: {
$push: {
$cond: {
if: { $gt: [ "$price.percent", 70 ] },
then: { $each: [10,25,50,70] },
else: null,
}
}
}
}
},
]
)
...
Run Code Online (Sandbox Code Playgroud)
是 Mongo DB 现在没有为此设置,还是我认为这一切都错了?
请在没有$each如下情况的情况下尝试
Item.aggregate(
[{
$group: {
_id: "$_id",
numbers: {
$push: {
$cond: {
if: { $gt: [ "$price.percent", 70 ] },
then: [10,25,50,70] ,
else: null,
}
}
}
}
}]);
Run Code Online (Sandbox Code Playgroud)
提供的答案将起作用,但每当块执行时它们都会添加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
}
}]);
Run Code Online (Sandbox Code Playgroud)
参考: $条件
| 归档时间: |
|
| 查看次数: |
8967 次 |
| 最近记录: |