2017-03-09 9 views
0

は、私は過去時間で すべてをトータルオンラインを計算PHP MongoDBのカウントレコードが

正常に動作PHPで簡単なMongoDBのクエリを書いたが、私はこの方法では、パフォーマンスのためによくない感じ

は何私が必要とすることは、レコード

のカウントのみで、それは自己すべてのマッチデータを返しています原因クエリ(ようにクエリ内の不要なデータがある)

私は、文書の何百万

スクリプトを持っているコレクションを持っている:

<?php 
    // Last Online Time 
    $Time = time() - 86400; 

    // Connection 
    $Manager = new MongoDB\Driver\Manager("mongodb://" . DB_USERNAME . ":" . DB_PASSWORD . "@" . DB_HOST . ":" . DB_PORT . "/" . DB_NAME); 

    // Query 
    $Query = new MongoDB\Driver\Query(['LastOnlineTime' => ['$gt' => (int) $Time]], []); 

    // Result 
    $Result = $Manager->executeQuery(DB_NAME . "." . $Collection, $Query); 

    // Get Total Online In 1 Hour Ago 
    echo count($Result->toArray()); 
?> 

は私の気持ち権ですか?

答えて

2

私ははるかに優れたソリューションMongoDBのコマンドここで

を見つけたが、それ

<?php 
// Last Online Time 
$Time = time() - 86400; 

// Connection 
$Manager = new MongoDB\Driver\Manager("mongodb://" . DB_USERNAME . ":" . DB_PASSWORD . "@" . DB_HOST . ":" . DB_PORT . "/" . DB_NAME); 

// Command 
$Command = new MongoDB\Driver\Command(["count" => "account", "query" => ['LastOnline' => ['$gt' => (int) $Time]]]); 

// Result 
$Result = $Manager->executeCommand(DB_NAME, $Command); 

// Get Total Online In 1 Hour Ago 
echo count($Result->toArray()->n); 

?>

です