2016-06-18 10 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クエリの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

関連する問題