问题:如何从mongodb按日期排序输出数据集合

我想从 mongodb 中检索 10 行最新消息。首先,我需要按字段“时间戳”按升序对数据进行排序。然后我需要选择前 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 u003d $collection->find ()->sort(array('timestamp'u003d>-1))->limit(10);

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

Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐