如何从日期排序的mongodb输出数据集合

hao*_*hao 4 php mongodb

我想从mongodb检索10行最新消息.首先,我需要按字段'timestamp'按升序对数据进行排序.然后我需要选择前10行,这些行是具有最新时间戳的行.这就是我建立连接的方式(成功)

  $m = new MongoClient("mongodb://127.0.0.1");
  $db = $m ->nutch;
  //echo "Database nutch selected";

  $collection = $db -> crawl_data; 

  $cursor = $collection->find();
Run Code Online (Sandbox Code Playgroud)

这就是我尝试按照PHP手册指南获取数据的方法

  $cursor->sort(array('timestamp' => 1));
  foreach($cursor as $doc){
  echo $doc["title"];
  }
Run Code Online (Sandbox Code Playgroud)

仅供参考:时间戳的数据类型为字符串:"2015/01/31".我不确定这是不是这个原因.

此外,当我使用MySql执行php时,浏览器总是告诉我问题在哪一行.使用mongodb,除了空白页面外,它不会给你任何错误报告....

Har*_*ris 11

排序不再像这样工作,为了能够使用find进行排序,您只需使用第二个查找参数,如下所示:

$filter  = [];
$options = ['sort' => ['timestamp' => -1]];

$client = new MongoDB\Client('mongodb://localhost');
$client->mydb->mycollection->find($filter, $options);
Run Code Online (Sandbox Code Playgroud)

这个答案复制


Dav*_*ere 6

php语法有点令人困惑.

Sort()Limit()方法可在完成find(不论顺序排序总是会发生在前).

它看起来像这样:

$cursor = $collection->find ()->sort(array('timestamp'=>-1))->limit(10);

然后你可以在php中颠倒10个文档的顺序,或者你可能需要使用聚合框架.