是否可以使用 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没有圆形,但是有一个外部库。
答案 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 }