2016-08-02 87 views
0

我有一個工作的聚合調用,執行$ project,$ match和$ sort(by _id),這很好地工作。

爲了優化我的應用程序,我試着在最後放棄$ sort部分,因爲我實際上在返回遊標函數後,在我的php應用程序中通過日期時間字符串進行排序。因此,我爲什麼不再希望按_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

首先,你在做project然後做match,這樣你就不會得到任何結果作爲輸出。

試試下面的代碼: -

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