Consulte
sort()
definição. sort({_id: -1, upvotes_count: -1})
significa classificar o
_id
primeiro, classifique upvotes_count
por ordem desc apenas para aqueles mesmos _id
Postagens. Infelizmente, o _id
é ObjectId
, que é do tipo BSON de 12 bytes, construído usando:- um valor de 4 bytes representando os segundos desde a época do Unix,
- um identificador de máquina de 3 bytes,
- um ID de processo de 2 bytes e
- um contador de 3 bytes, começando com um valor aleatório.
É difícil obter o mesmo
ObjectId
. Ou seja, o _id
de cada registro deve ser único neste documento. Como resultado, o resultado de seus códigos de teste é ordenado apenas por _id
descrição Aqui está um exemplo,
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 4 | 7 |
| 3 | 9 |
| 4 | 8 |
O resultado de
sort({_id: -1, upvotes_count: -1})
deveria estar +---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 4 | 8 |
| 4 | 7 |
| 3 | 9 |
| 1 | 5 |
O
upvote_count
seria classificado para o mesmo _id
. No entanto, neste caso. Existe no mesmo
_id
nesse caso. +---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 4 | 7 |
| 3 | 9 |
| 2 | 8 |
O resultado de
sort({_id: -1, upvotes_count: -1})
deveria estar +---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 2 | 8 |
| 3 | 9 |
| 4 | 7 |