2016-08-02 4 views
0

$ project、$ match、$ sort(_id)を実行する作業集計呼び出しがありますが、これは完璧に機能します。

私のアプリを最適化するために、カーソル関数が返された後、PHPアプリケーションのdatetime文字列で実際にソートしているため、最後に$ sort部分を削除しようとしました。なぜ私はもはや_idで並べ替えることを望んでいないのです。

ただし、パイプラインのこの部分を削除すると、データは返されません。これは私の電話の必須部分ですか?

$pipeline = [ 
    ['$project' => [ 
     'date' => '$date', 
     'time' => '$time', 
     'datetime' => '$datetime', 
     'dev_id' => '$dev_id' 
     ], 
    ], 
    ['$match' => [ 
     'dev_id' => ['$in' => $deviceIdArray], 
     'datetime' => ['$gte' => $this->dateFrom, '$lte' => $this->dateTo]], 
    ], 
    ['$sort' => ['_id' => -1], 
    ], 
    ]; 

答えて

0

まずはmatchをやって、その後projectを行っているので、あなたが出力として任意の結果を取得されていません。

以下のコードを試してください: -

$pipeline = [ 
['$match' => [ 
    'dev_id' => ['$in' => $deviceIdArray], 
    'datetime' => ['$gte' => $this->dateFrom, '$lte' => $this->dateTo]], 
] 
['$project' => [ 
    'date' => '$date', 
    'time' => '$time', 
    'datetime' => '$datetime', 
    'dev_id' => '$dev_id' 
    ], 
] 
]; 
関連する問題