我正在使用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")}
我使用这个原始查询来获取$sum
每个文档(3 个文档)的所有“monto”的查询。
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']);