2017-08-25 1 views
0

私は2つのコレクション、 'booking'と 'user'を持っています。私はbookinguserからusrLastnameのデータを昇順でソートしたいと思っています。

ここにサンプルデータがあります。

booking:- {"_id": ObjectId("59a00979bb4d731037000029"), 
    "cabinname": "xxxx", 
    "user": ObjectId("57877d23049ac1b819000029"), 
} 

user:- { "_id": ObjectId("578610de049ac1741d000029"), 
    "usrName": "xxxxx", 
    "usrFirstname": "xx", 
    "usrLastname": "xxxx", 
} 

ただし、並べ替えが機能していない - 昇順または降順で並べ替えられません。ここで

は、このコードは私の作品私のコード

$results = $collection->aggregate(array(
     array('$match' => array('status'=>array('$in' => array('1', '4')),'is_delete' => 0,'cabinname'=>$eachcabin['name'],'checkin_from'=> array('$lte' => new MongoDate()),'reserve_to'=>array('$gt' => new MongoDate()))), 
     array('$lookup' => array(
     'from' => 'user', 
     'localField' => 'user', 
     'foreignField' => '_id', 
     'as' => 'u' 
     )), 
     array('$unwind' => '$u'), 
     array('$sort' => array(
     'u.usrLastname' => -1, 
     )), 
    ));' 
+3

"作業しない"よりもはるかに具体的である必要があります。いくつかのサンプル文書と、期待される結果がこれらからどのようなものであるべきかを示してください。実際に正しいフィールド名を指していることを確認してください。チェックするのはかなり簡単です。質問に追加する必要がある理由とその理由を理解するには、[最小限の、完全で検証可能な例の作成方法](https://stackoverflow.com/help/mcve)を参照してください。 –

+2

「完全かつ検証可能」を繰り返してください。あなたは「正しく分類されていない」と言っている。各文書の1つのみを表示します。 「非常に」では、注文が実際に尋ねられたとおりにソートされていないことを示す「検証可能な」結果の「2つのドキュメント」を表示する必要があります。そうでなければ、物語を回転させているだけで、あなたの本当の問題を引き起こしているあなたの質問にはリストされていない他の問題コードがある可能性があります。そういうわけで、訂正するように教えてくれるものを教えてくれるMCVEを作るか、自分の間違いを認識させるMCVEを作ってほしいのです。 –

+0

パイプラインをステップごとに確認する必要があります。最初に一致条件がうまく働いていることを確認してください。次に、巻き戻さずにルックアップをチェックしてから、他の手順を確認します。 – Sachin

答えて

-1

です:

$mongo = new \MongoClient(); 
$db = MASTER_DB_NAME; 
$table = $this->__table; 
$c = $mongo->$db->selectCollection($table); 
$search_array['deletedAt'] = ""; 
$pipeline = array(
    array(
     '$match' => $search_array 
    ), 
    array(
     '$lookup' => array('from' => "stm_userDetails", 
      'localField' => "fkUserId", 
      'foreignField' => "_id", 
      'as' => "userArray", 
     ), 
    ), 
    array(
     '$addFields' => array('userArray' => 
      array('$arrayElemAt' => array(array('$filter' => array('input' => '$userArray', 'as' => 'comp', 'cond' => array('$eq' => array('$$comp.fkUserId', $UserId)))),0))), 
    ), 
    array(
     '$unwind' => '$userArray', 
    ), 
    array(
     '$sort' => array('addedAt' => -1), 
    ), 
); 
$cursor = $c->aggregate($pipeline); 
return $cursor; 

が、これはあなたを助けることを願っています。 :)

関連する問題