2016-06-18 40 views
0

我已經在mongoDB中創建了查詢。在MongoChef中,此查詢在不到2秒的時間內生成了超過1萬條記錄。現在我想在PHP中執行這個查詢。 所以我不知道如何在php中編寫查詢,因爲我閱讀互聯網上的各種文檔,但困惑如何實現它。如何在覈心PHP中編寫MongoDB查詢?

db.PMS.aggregate(
[ 
    {$project: 
     {EventTS:1,MainsPower:1,PanelID:1} 
    }, 
    {$unwind: 
     {path:"$MainsPower",includeArrayIndex:"arrayIndex",preserveNullAndEmptyArrays:true} 
    }, 
    { $match: { "MainsPower":{$ne:null}}}, 
    { $match: { "EventTS":{$gt:new Date("2016-01-01")}}}, 
    {$project: 
     {MainsPower:1, 
      PanelID:1, 
      timestamp:{"$add": 
       [{'$subtract' : ["$EventTS",new Date("1970-01-01")]}, 
       {"$multiply":[60000,"$arrayIndex"]} 
       ]} 
      } 
    } 
    ] 
); 
+0

其中*驅動程序*您使用的?你讀過這個了嗎? http://php.net/manual/en/book.mongo.php – m02ph3u5

+0

@ m02ph3u5我使用的是mongodb版本:1.1.7 – Amit

回答

1

您可以使用php官方文檔中提供的一些資源。在php中的sql查詢映射到php中的mongoDB查詢可以找到here。 另外我有一個演示登錄和註冊腳本在我的github。您可以在this回購中查看那些回購。

0

如果使用MongoDB PHP Library,你應該能夠做一些類似的:

$mongo = new MongoClient(); 

$database = $mongo->examples; 
$collection = $database->PMS; 

$pipeline = [ 
    [ 
     '$project' => [ 
      'EventTS' => 1, 
      'MainsPower' => 1, 
      'PanelID' => 1, 
     ] 
    ], 
    [ 
     '$unwind' => [ 
      'path' => '$MainsPower', 
      'includeArrayIndex' => 'arrayIndex', 
      'preserveNullAndEmptyArrays' => true 

     ] 
    ], 
    ... 
]; 

$cursor = $collection->aggregate($pipeline); 
+0

在$匹配中,我必須通過動態日期,以便如何在管道中傳遞動態日期變量 – Amit