Я использую nodejs с официальным пакетом mongodb. Я получил много документов в mongodb, содержащих поля «type» и «timestamp». Я хочу отсортировать его по приоритетам «тип» (только указав c контент), а затем «отметка времени». В качестве примера у меня есть следующие документы:
{ type: "book", timestamp: 1580825471 }
{ type: "house", timestamp: 1580825502 }
{ type: "water", timestamp: 1580825515 }
{ type: "book", timestamp: 1580825478 }
{ type: "smartphone", timestamp: 1580825522 }
{ type: "book", timestamp: 1580825424 }
Моя цель состоит в том, чтобы отсортировать таким образом по приоритету тип «книга» (а затем отсортировать его по метке времени)
{ type: "book", timestamp: 1580825478 }
{ type: "book", timestamp: 1580825471 }
{ type: "book", timestamp: 1580825424 }
{ type: "smartphone", timestamp: 1580825522 }
{ type: "water", timestamp: 1580825515 }
{ type: "house", timestamp: 1580825502 }
Я пытался использовать db.collection.aggregate со следующим значением $ sort:
$sort: {
type: "book",
timestamp: -1
}
Но это не сработало, поскольку значение поля $ sort может иметь значение " 1."," -1"или" {$ meta: "textScore"}".
У кого-нибудь есть идеи, как решить эту проблему?
Заранее спасибо
РЕДАКТИРОВАТЬ:
Это решение с использованием
$sort: {
type: 1,
timestamp: -1
}
является не решение с тех пор все типы также сортируются, чего я не хочу. Я просто хочу иметь «книгу» в качестве первого результата, а затем типы могут быть рандомизированы (но временная метка все еще сортируется). Причина этого в том, что я хочу перечислить записи истории (поэтому я использую метку времени для сортировки), но сначала я хочу показать тип «book». Даже если документ старше, чем другие документы. Так что да, для других типов ожидают «книгу», я хочу, чтобы она сортировалась по отметке времени.