查找和排序查询PHP MONGODB

问题描述 投票:1回答:1

我目前正在尝试显示一个查询,其中我正在尝试按特定列(“ 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
}
 ?>

请有人提供建议?

php mongodb sorting find
1个回答
1
投票

我去年没有在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);
}

此外,您可以使用不带过滤器的代码,并检查结果是否有序。

问候!

© www.soinside.com 2019 - 2024. All rights reserved.