[英]how to output a collection of data from mongodb sort by date
我想从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();
这就是我尝试按照PHP手册指南获取数据的方法
$cursor->sort(array('timestamp' => 1));
foreach($cursor as $doc){
echo $doc["title"];
}
仅供参考:时间戳的数据类型为字符串:“2015/01/31”。 我不确定这是不是这个原因。
此外,当我使用MySql执行php时,浏览器总是告诉我问题在哪一行。 使用mongodb,它不会给你任何错误报告,除了空白页....
排序不再像这样工作,为了能够使用find进行排序,您只需使用第二个查找参数,如下所示:
$filter = [];
$options = ['sort' => ['timestamp' => -1]];
$client = new MongoDB\Client('mongodb://localhost');
$client->mydb->mycollection->find($filter, $options);
从这个答案复制
php语法有点令人困惑。
Sort()
和Limit()
方法可以在find
上完成(无论排序总是先发生的顺序)。
它看起来像这样:
$cursor = $collection->find ()->sort(array('timestamp'=>-1))->limit(10);
然后你可以在php中颠倒10个文档的顺序,或者你可能需要使用聚合框架。
您可以使用_id字段按时间戳排序。
以下查询可以打印最新的10条记录。
$cursor = $collection->find()->sort( array("_id" => -1 ))->limit(10);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.