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

?>