有人可以指出我的错误,尝试使用userId
字段对字段(金额)求和吗?
https://fatfreeframework.com/3.6/mongo-mapper
这是我的代码,这是返回所有与userId匹配但不是总和的文档。
$f3 = \Base::instance();
$mapper = new \DB\Mongo\Mapper($f3->get('MongoDB'),'transactions');
$filter = array('userId'=>'452');
$options = array(
array(
'group' => array(
'_id' => array('userId' => $userId),
'amount' => array('$sum' => 'amount')
)
)
);
$data = $mapper->find($filter, $options);
echo "<pre>";
print_r($data);
exit;
答案 0 :(得分:1)
mongo映射器使用db.collection.group()方法而不是聚合框架。因此,您无法调用$sum
等累加器。
相反,您必须使用以下语法:
$group = [
'keys'=>['userId'=>1],
'initial'=>['sum'=>0],
'reduce'=>'function(obj,result){result.sum+=obj.amount;}',
'finalize'=>'function(result){}',
);
$data = $mapper->find($filter, ['group'=>$group]);