2017-03-09 5 views
0

Ich habe geschrieben eine einfache MongoDB-Abfrage in PHPPHP MongoDB Count Aufzeichnungen

, die in der letzten Stunde gesamte Online berechnet alles

funktioniert gut, aber ich fühle diese Art und Weise für die Leistung nicht gut ist

Seien sie Ursache Abfrage

es selbst alle Spiele Daten zurück (so ist es nicht mehr benötigte Daten in dieser Abfrage)

Was ich brauche, ist nur die Anzahl der Datensätze

Ich habe eine Sammlung, die Millionen von Dokumenten

Script hat:

<?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()); 
?> 

Ist mein Gefühl Rechte?

Antwort

2

ich eine wesentlich bessere Lösung MongoDB Befehl

Hier ist es

<?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); 

!>

habe festgestellt