2017-02-08 12 views
1

Ich verwende die MongoDB\Driver\Manager, um eine Verbindung zu MongoDB mit PHP herzustellen. Die Treiberversion ist 1.6.14 und ich kann mich verbinden und eine Abfrage machen.MongoDB-Konnektor für PHP: Zählen Dokumente für die Paginierung

Aber ich brauche die Gesamtzahl der Dokumente für meine Abfrage die Paginierung zu machen:

$reg_pag = 20; 
$pag = $_GET["pag"]; 

$mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); 
$filter = []; 
$filter["brand"] = $_GET["brand"]; 
$options = ["skip" => ($pag-1)*$reg_pag , "limit" => $reg_pag]; 
$query = new MongoDB\Driver\Query($filter, $options); 
$rows = $mng->executeQuery("carsdb.cars", $query); 

Ich versuche, mit $rows->count() und mit count($rows). Der erste Befehl funktioniert nicht und der letzte Befehl gibt die gefilterten Daten zurück (return 20).

Antwort

0

Verwenden Sie executeCommand Methode. Probieren Sie etwas wie den folgenden Code:

$mongo = new MongoDB\Driver\Manager("mongodb://localhost:27017"); 
// search params 
$query = ["brand" => $_GET["brand"]]; 
// define a command - not only a regular query 
$command = new MongoDB\Driver\Command(["count" => "cars", "query" => $query]); 
try { 
    // execute the command here on your database 
    $result = $mongo->executeCommand("carsdb", $command); 
    $res = current($result->toArray()); 
    $count = $res->n; 
    echo $count; 
} catch (MongoDB\Driver\Exception\Exception $e) { 
    echo $e->getMessage(), "\n"; 
} 

Entnommen here, mit einer Anpassung an Ihren Fall.

+0

Danke! Es klappt! :) – Josebyte

Verwandte Themen