2016-10-02 3 views
2

Ich habe eine Datenbank in MongoDB users. Es enthält folgende Felder:mongodb sort aggregat in php

  • _id
  • fname
  • lname

Ich habe versucht, den Vornamen (fname) und Nachnamen (lname) durch Aggregatfunktion mit dem folgenden PHP-Code verketten .

$cursor = $this->users->aggregate(
    array(
    '$project' => array(
     'name' => array('$concat' => array('$fname', ' ', '$lname')) 
    ) 
) 
); 

Dies scheint gut zu funktionieren. Aber wie sortieren wir die Ergebnisse? Ich habe versucht, diese Codezeile zu verwenden, um das Ergebnis

$cursor->sort(array("name" => 1)); 

Aber geben Sie mir die folgende Fehlermeldung zu sortieren:

Fatal error: Call to a member function sort() on array 

Allerdings habe ich versucht, diesen Code in der Konsole zu verwenden, und es funktionierte gut:

db.users.aggregate({ 
    $project: { 
    'name' {$concat: ['$fname', ' ', '$lname']} 
    } 
}, {$sort: {name: 1}}); 

Dieser Code funktionierte gut und ich bekomme das Ergebnis sortiert.

Was könnte das Problem mit der Sortierfunktion in PHP-Code sein?

Jede Hilfe wäre willkommen.

+1

Sie können Sortierung im selben Array hinzufügen, siehe [link] (http://stackoverflow.com/questions/14131833/mongodb-aggregate-query-using-php-driver) – Puhal

Antwort

2

Versuchen Sie diesen Code:

$cursor = $this->users->aggregate(
    array(
    '$project' => array(
     'name' => array('$concat' => array('$fname', ' ', '$lname')) 
    ) 
),array(
    '$sort' => array(
     'name' => 1 
    ) 
) 
); 

Hope this Hilfe.