MongoDB - сортировать результат и конвертировать дату в строку - PullRequest
0 голосов
/ 21 января 2020

У меня есть требование, где результат должен быть отсортирован по порядку DES C (по дате), поэтому последний документ будет первым, а затем другие документы и преобразовать дату в строковый формат, например "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" }

Любая помощь будет признательна! Спасибо.

1 Ответ

1 голос
/ 21 января 2020

Однако попытался применить первую сортировку, а затем преобразовать, но не получил ожидаемый результат.

В чем была проблема. Это объединение отлично работает для меня:

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

Вы можете попробовать здесь .

...