2016-10-02 11 views
2

私はMongoDBにデータベースを持っていますusers。それは、以下のフィールドが含まれています。私は、次のPHPコードと集約関数を介して第1名(FNAME)と姓(LNAME)を連結しようと mongodbソート集合体をPHPで

  • FNAME
  • LNAME
  • _id

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

      これはうまくいくようです。 しかし、どのように結果を並べ替えるのですか? 私は結果

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

      しかし、これは私に次のエラー与えるソートするコード行を使用してみました。しかし

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

      に、私は、コンソールでこのコードを使用しようとしましたが、それがうまく働きました。

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

      このコードはうまく機能し、ソートされた方法で結果が得られます。

      phpコードのソート機能にはどのような問題がありますか?

      ご協力いただければ幸いです。

    +1

    同じ配列にソートを追加することもできます。[link](http://stackoverflow.com/questions/14131833/mongodb-aggregate-query-using-php-driver)を参照してください。 – Puhal

    答えて

    2

    このコードを試してみてください。

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

    は、このヘルプを願っています。