MongoDB - 排序结果并将日期转换为字符串

MongoDB - Sort result and Convert date to string

我有一个要求,结果应该按 DESC(按日期)顺序排序,因此最新文档将排在第一位,然后是其他文档,并将日期转换为字符串格式,例如“2019-06-27”。

我可以通过 $dateToString 函数将日期转换为字符串格式,但不能排序,因为它现在是字符串格式。但是,尝试应用第一种排序然后进行转换,但没有得到预期的输出。

以下是 MongoDB 集合中存储的文档:

{ "_id": "9d78d0e8-7b13-4487-88a3-d91d64f29b38", "Number": "001", "createdon": { "$date": "2019-09-19T00:00:00.000Z" } }, { "_id": "5d78d0e8-7b13-4487-88a3-d91d64f29b02", "Number": "002", "createdon": { "$date": "2019-09-13T00:00:00.000Z" } }, { "_id": "2w78d0e8-7b13-4487-88a3-d91d64f29b47", "Number": "003", "createdon": { "$date": "2019-09-25T00:00:00.000Z" } }, { "_id": "6e78d0e8-7b13-4487-88a3-d91d64f29b2d", "Number": "004", "createdon": { "$date": "2020-01-18T00:00:00.000Z" } }

预期结果:

{ "_id": "6e78d0e8-7b13-4487-88a3-d91d64f29b2d", "Number": "004", "createdon": "2020-01-18" }, { "_id": "2w78d0e8-7b13-4487-88a3-d91d64f29b47", "Number": "003", "createdon": "2019-09-25" }, { "_id": "9d78d0e8-7b13-4487-88a3-d91d64f29b38", "Number": "001", "createdon": "2019-09-19" }, { "_id": "5d78d0e8-7b13-4487-88a3-d91d64f29b02", "Number": "002", "createdon": "2019-09-13" }

任何帮助将不胜感激!!谢谢

However, tried to apply the first sort and then convert but not getting the expected output.

问题出在哪里。这种聚合非常适合我:

db.collection.aggregate([
  {
    $sort: {
      createdon: -1
    }
  },
  {
    $addFields: {
      createdon: {
        $dateToString: {
          date: "$createdon",
          format: "%Y-%m-%d"
        }
      }
    }
  }
])

你可以try it here.