2017-03-09 90 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); 

?>