我有一个工作聚合调用,执行$ project,$ match和$ sort(由_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 :(得分: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'
],
]
];