如何输出 mongodb 按日期排序的数据集合
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,它不会给您任何错误报告,除了空白页....
php 语法有点混乱。
Sort()
和 Limit()
方法可以在 find
上完成(无论顺序如何,排序总是先发生)。
看起来像这样:
$cursor = $collection->find ()->sort(array('timestamp'=>-1))->limit(10);
然后你可以把php中的10个文档倒序,否则你可能需要使用聚合框架。
排序不再像这样工作了,
为了能够使用查找进行排序,您只需像这样使用第二个查找参数:
$filter = [];
$options = ['sort' => ['timestamp' => -1]];
$client = new MongoDB\Client('mongodb://localhost');
$client->mydb->mycollection->find($filter, $options);
复制自
您可以使用 _id 字段按时间戳排序。
下面的查询可以打印最近的10条记录。
$cursor = $collection->find()->sort( array("_id" => -1 ))->limit(10);
我想从 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,它不会给您任何错误报告,除了空白页....
php 语法有点混乱。
Sort()
和 Limit()
方法可以在 find
上完成(无论顺序如何,排序总是先发生)。
看起来像这样:
$cursor = $collection->find ()->sort(array('timestamp'=>-1))->limit(10);
然后你可以把php中的10个文档倒序,否则你可能需要使用聚合框架。
排序不再像这样工作了, 为了能够使用查找进行排序,您只需像这样使用第二个查找参数:
$filter = [];
$options = ['sort' => ['timestamp' => -1]];
$client = new MongoDB\Client('mongodb://localhost');
$client->mydb->mycollection->find($filter, $options);
复制自
您可以使用 _id 字段按时间戳排序。
下面的查询可以打印最近的10条记录。
$cursor = $collection->find()->sort( array("_id" => -1 ))->limit(10);