在MongoDB聚合框架中将小数点四舍五入到最接近的整数

时间:2019-04-04 06:28:30

标签: mongodb mongodb-query aggregation-framework rounding

我已经浏览了以下站点,但无法获取解决方案。 Round to 2 decimal

我的小数点以下,并且想取整到最接近的整数:

34.56 => 35
34.67 => 35
34.12 => 34

我已经尝试过了:

            "$subtract": [
                        "$x",
                        { "$mod": ["$x", 1] }
                    ]

类似于 Oracle Round函数

我如何在MongoDB中工作?

1 个答案:

答案 0 :(得分:2)

MongoDB在4.2中引入了$round。作为解决方法,您可以使用$floor$ceil有条件地检查分数部分是否大于0.5

db.collection.aggregate([
    {
        $project: {
            x: { 
                $cond: [ 
                    { $gte: [ { $subtract: [ "$x", { $floor: "$x" } ] }, 0.5 ] }, 
                    { $ceil: "$x" }, 
                    { $floor: "$x" } 
                ] 
            }
        }
    }
])

Mongo playground