MongoDB按列排序(文本)

时间:2018-02-19 17:54:59

标签: php mongodb

我正在尝试运行一个在特定日期范围之间返回文档的查询。

日期存储如下:" Mon Feb 19 16:59:40 +0000 2018"在名为" date"的列中。我知道通过运行sort {date:-1}按升序或降序排序,但是,我不相信MongoDB正确执行此比较。

我正在考虑通过PHP脚本将所有这些日期转换为Unix时间戳,但是,必须有一种方法来保持数据不变并按日期列排序?

因此,我的问题是如何运行查询以检索两个日期X和Y之间的所有文档?第二个问题,我最好在将日期预先处理到Unix时间戳之前将其存储到MongoDB中吗?

1 个答案:

答案 0 :(得分:2)

关于你的第一个问题: 是的,可以像这样使用聚合:

db.coll.aggregate()
  .project({
      dateTimestamp: {
         $dateFromString: {
           dateString: '$date'
        }
     //project additional necessary fields
    }
  })
  .sort({dateTimestamp:1})

第二个问题: 如果没有理由不这样做,我可能会将它存储为日期。使用日期可以更轻松地查询/排序