Consulte sort()
definición.
sort({_id: -1, upvotes_count: -1})
significa ordenar el _id primero, luego ordene upvotes_count por orden de desc solo para los mismos _id publicaciones Desafortunadamente, el _id es ObjectId
, que es de tipo BSON de 12 bytes, construido usando:
- un valor de 4 bytes que representa los segundos desde la época de Unix,
- un identificador de máquina de 3 bytes,
- una identificación de proceso de 2 bytes, y
- un contador de 3 bytes, que comienza con un valor aleatorio.
Es difícil obtener el mismo ObjectId . Es decir, el _id de cada registro debe ser único en este documento. Como resultado, el resultado de sus códigos de prueba solo se ordena por _id desc.
Aquí hay un ejemplo,
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 4 | 7 |
| 3 | 9 |
| 4 | 8 |
El resultado de sort({_id: -1, upvotes_count: -1}) debería ser
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 4 | 8 |
| 4 | 7 |
| 3 | 9 |
| 1 | 5 |
El upvote_count se ordenaría para el mismo _id .
Sin embargo, en este caso. Hay en el mismo _id en este caso.
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 4 | 7 |
| 3 | 9 |
| 2 | 8 |
El resultado de sort({_id: -1, upvotes_count: -1}) debería ser
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 2 | 8 |
| 3 | 9 |
| 4 | 7 |