[已解决]mongodb时间排序的问题

业务背景

  • 我想按照时间排序
  • 取最近一条数据

遇到的困难

  • 2019年3月总是比2019年4月要大
  • 可正常情况来说,3月不是应该比4月要小么

示例代码

升序查询

> db.getCollection("cash-infos").find({},{createdAt:1}).sort({createdAt: 1})

{ "_id" : ObjectId("5caa78992f26e525a86085d2"), "createdAt" : "Mon Apr 08 2019 06:23:46 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa80e83de43925c80353a7"), "createdAt" : "Mon Apr 08 2019 06:57:37 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa81723de43925c80353a8"), "createdAt" : "Mon Apr 08 2019 06:57:37 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa823491e61b3660367fd2"), "createdAt" : "Mon Apr 08 2019 07:05:20 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa8252d660a42d2cbb6bb2"), "createdAt" : "Mon Apr 08 2019 07:05:50 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa82a4f0d94e34c4eecf46"), "createdAt" : "Mon Apr 08 2019 07:07:12 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5c7efc6b495b71617c42a9ce"), "createdAt" : "Wed Mar 06 2019 06:45:39 GMT+0800 (中国标准时间)" }

降序查询

> db.getCollection("cash-infos").find({},{createdAt:1}).sort({createdAt: -1})

{ "_id" : ObjectId("5c7efc6b495b71617c42a9ce"), "createdAt" : "Wed Mar 06 2019 06:45:39 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa82a4f0d94e34c4eecf46"), "createdAt" : "Mon Apr 08 2019 07:07:12 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa8252d660a42d2cbb6bb2"), "createdAt" : "Mon Apr 08 2019 07:05:50 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa823491e61b3660367fd2"), "createdAt" : "Mon Apr 08 2019 07:05:20 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa80e83de43925c80353a7"), "createdAt" : "Mon Apr 08 2019 06:57:37 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa81723de43925c80353a8"), "createdAt" : "Mon Apr 08 2019 06:57:37 GMT+0800 (中国标准时间)" }
{ "_id" : ObjectId("5caa78992f26e525a86085d2"), "createdAt" : "Mon Apr 08 2019 06:23:46 GMT+0800 (中国标准时间)" }
阅读 6.7k
1 个回答

你这是字符串,字符串排序是逐字节比较的,当然得不到正确的顺序了。改为日期时间类型即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进