在PHP中的聚合函数中舍入浮点数?

时间:2016-06-10 08:28:03

标签: php mongodb aggregation-framework

是否可以使用 PHP 内置的$project函数在round数组中执行此操作?

我尝试将round函数中的输出值括在 2 小数位:

"Energy" => round(array('$multiply' => array("$energy", 10)), 2), 

我得到的输出错误是:

  

键入:MongoDB \ Driver \ Exception \ RuntimeException

     

代码:16406

     

消息:顶级_id字段是当前支持排除的唯一字段

     

文件:C:\ wamp \ www \ DRM \ vendor \ mongodb \ mongodb \ src \ Operation \ Aggregate.php   行:168

目前我有一个单独的解析方法来处理所有舍入,但我喜欢的是在PHP的聚合函数中执行它。

这可能吗?我知道MongoDB没有圆形,但是有一个外部库。

1 个答案:

答案 0 :(得分:1)

还没有mongo的runding功能。

as per this answer,您可以在聚合管道中添加额外的步骤以使其四舍五入 - 在mongo shell代码下面:

> db.a.save({x:1.23456789})
> db.a.save({x:9.87654321})
> db.a.aggregate([{$project:{ _id:0, 
         y:{$divide:[
              {$subtract:[
                      {$multiply:['$x',100]},
                      {$mod:[{$multiply:['$x',100]}, 1]}
              ]},
              100]}
}}])
{ "y" : 1.23 }
{ "y" : 9.87 }

jira ticket