在执行自增值$inc时,类似于MySQL的(字段=字段+2)这种功能。
$model->where($where)->save(array("money"=>array("inc", 0.8)));
执行上面代码,money将不增加任何数据。最后终于找到原因
ThinkPHP\Library\Think\Db\Driver\Mongo.class.php
589行
case 'inc':
$result['$inc'][$key] = (int)$val[1];
break;
此时强制转换为int,如果是货币类型有小数点情况下。小数点直接抹掉。真是搞不清楚驱动作者是怎么想的。MongoDB适用场景有那么窄么?
不知道有多少人因为这个BUG被坑!!
临时解决方案,将(int)修改为(double)。
最佳答案
