我目前正在尝试显示一个查询,其中我正在尝试按特定列(“ epoch_start”)进行排序。
由于某些原因,我能够使用find()函数显示查询,但是每当尝试使用sort()函数时,都会收到以下错误:
未捕获的错误:调用未定义的方法MongoDB \ Driver \ Cursor :: sort()
请在下面找到我的代码:
<?php
$query2 = array('complete_title' => array('$regex' => 'andrew_marr'));
$cursor = $collection_programs
->find($query2)
->sort(array("epoch_start" => 1));
foreach ($cursor as $doc) {
?>
<tr>
<td><?php echo $doc["pid"] ?></td>
<td><?php echo $doc["start_time"] ?></td>
<td><?php echo $doc["end_time"] ?></td>
<td><?php echo $doc["complete_title"] ?></td>
<td><?php echo $doc["media_type"] ?></td>
<td><?php echo $doc["masterbrand"] ?></td>
<td><?php echo $doc["service"] ?></td>
<td><?php echo $doc["masterbrand"] ?></td>
</tr>
<?php
}
?>
请有人提供建议?
我去年没有在MongoDB中使用PHP,但是您遇到了错误,因为您在游标组件中使用了sort,并且文档说您可以在查询组件中使用sort作为选项。
尝试使用此代码,我没有检查,但是如果您使用的是MongoDB Driver,则可能工作正常。
$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$filter = ['complete_title' => ['$regex' => 'andrew_marr']];
$options = ['sort' => ['epoch_start' => 1]];
$query = new MongoDB\Driver\Query( $filter, $options );
$cursor = $manager->executeQuery("your_collection", $query);
foreach($cursor as $document) {
print_r($document);
}
我刚刚读过的另一个选项
$query = new MongoDB\Driver\Query( $filter );
$cursor = $manager->executeQuery("your_collection", $query);
$cursor->sort(['epoch_start' => 1]);
foreach($cursor as $document) {
print_r($document);
}
此外,您可以使用不带过滤器的代码,并检查结果是否有序。
问候!