【发布时间】:2017-06-24 03:50:13
【问题描述】:
我正在使用 jenssegers 驱动程序在 laravel 中使用 mongodb,我的数据库中有 3 个类似这样的文档
{
"_id" : ObjectId("594dd540bb7de924c0005583"),
"cliente" : "Luis",
"tipo" : "Luis",
"paquete" : "Luis",
"fecha" : null,
"fechaE" : null,
"content" : "fotos",
"precio" : NumberInt(200),
"estatus" : NumberInt(2),
"Abonos" : [
{
"Monto" : NumberInt(200),
"Fecha" : null
},
{
"Monto" : NumberInt(2000),
"Fecha" : null
},
{
"Monto" : NumberInt(2000),
"Fecha" : null
}
],
"updated_at" : ISODate("2017-06-24T02:58:08.000+0000"),
"created_at" : ISODate("2017-06-24T02:58:08.000+0000")}
我正在使用这个 Raw 查询来获取每个文档(3 个文档)的所有“monto”的 que $sum。
public function updatearray(Request $request, $id){
$works = new work;
$result = Work::raw(function($collection)
{
return $collection->aggregate(array(
array('$unwind' => '$Abonos'),
array('$group' =>
array( "_id" => '$_id',"Monto" => array('$sum' => '$Abonos.Monto'))),
));
});}
我只想显示我当前文档的结果,有没有办法可以匹配当前的$id?
-- 编辑 我从 get 方法获取 id
public function abono($id){
$work = work::find($id);
return view('workabono', compact('work'));
}
这些是我使用的路线
Route::get('works/{work}/abono', [
'as' => 'works.abono', 'uses' => 'WorkController@abono']);
Route::put('works/{work}/', [
'as' => 'works.updateAbono', 'uses' => 'WorkController@updatearray']);
【问题讨论】:
标签: php mongodb laravel aggregation-framework jenssegers-mongodb