2016-06-09 53 views
1

我创建了mongodb查询,我必须在laravel控制器中使用。如何在Laravel 5中实现MongoDB查询?

我的查询是

db.PMS.aggregate([ 
    { $match: { "PanelID": "A00898" } }, 
    { 
     $project: { EventTS: 1, MainsPower: 1, } 
    }, 
    { 
     $unwind: { 
      path: "$MainsPower", 
      includeArrayIndex: "arrayIndex", 
      preserveNullAndEmptyArrays: true 
     } 
    }, 
    { 
     $project: { 
      MainsPower: 1, 
      timestamp: { 
       "$add": [ 
        "$EventTS", 
        { "$multiply": [ 60000, "$arrayIndex" ] } 
       ] 
      } 
     } 
    } 
]); 

我想在一个laravel功能使用这个查询,但我有点困惑。请帮助我如何在laravel中实现此查询。

回答

1

内部MongoCollection对象上执行原始表达式运行聚集:

$result = DB => collection('PMS')->raw(function ($collection){ 
    return $collection->aggregate(array(
     array('$match' => array("PanelID" => "A00898")), 
     array('$project' => array('EventTS' => 1, 'MainsPower' => 1)), 
     array(
      '$unwind' => array(
       'path' => "$MainsPower", 
       'includeArrayIndex' => "arrayIndex", 
       'preserveNullAndEmptyArrays' => true 
      ) 
     ), 
     array(
      '$project' => array(
       '_id' => 0, 
       'MainsPower' => 1, 
       'timestamp' => array(
        "$add" => array(
         "$EventTS", 
         array("$multiply" => array(60000, "$arrayIndex")) 
        ) 
       ) 
      ) 
     ) 
    )); 
}); 
+0

感谢@chridam做工精细。在目标文件格式 –

+0

查询输出如何转换为数组 –

+0

@dhanashri我已经更新了回答,再试一次 – chridam