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

Kam*_*iya 1 rounding mongodb mongodb-query aggregation-framework

我已经浏览了以下网站,但无法得到我的解决方案。 四舍五入到小数点后 2 位

我有以下小数并想四舍五入到最接近的整数:

34.56 => 35
34.67 => 35
34.12 => 34
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这个:

            "$subtract": [
                        "$x",
                        { "$mod": ["$x", 1] }
                    ]
Run Code Online (Sandbox Code Playgroud)

与Oracle Round 函数相同

我可以在 MongoDB 中做什么?

mic*_*ckl 5

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" } 
                ] 
            }
        }
    }
])
Run Code Online (Sandbox Code Playgroud)

蒙戈游乐场