Fare riferimento a sort()
definizione.
sort({_id: -1, upvotes_count: -1})
significa ordinare il _id
per prima cosa, quindi ordina upvotes_count
per ordine solo per quelli uguali _id
messaggi. Sfortunatamente, il _id
è ObjectId
, che è di tipo BSON a 12 byte, costruito utilizzando:
- un valore di 4 byte che rappresenta i secondi dall'epoca di Unix,
- un identificatore di macchina a 3 byte,
- un ID processo a 2 byte e
- un contatore a 3 byte, che inizia con un valore casuale.
È difficile ottenere lo stesso ObjectId
. Vale a dire, il _id
di ogni record dovrebbe essere univoco in questo documento. Di conseguenza, i risultati dei tuoi codici di prova vengono ordinati solo in base a _id
disc.
Ecco un esempio,
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 4 | 7 |
| 3 | 9 |
| 4 | 8 |
Il risultato di sort({_id: -1, upvotes_count: -1})
dovrebbe essere
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 4 | 8 |
| 4 | 7 |
| 3 | 9 |
| 1 | 5 |
Il upvote_count
verrebbe ordinato per lo stesso _id
.
Tuttavia, in questo caso. C'è sullo stesso _id
in questo caso.
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 4 | 7 |
| 3 | 9 |
| 2 | 8 |
Il risultato di sort({_id: -1, upvotes_count: -1})
dovrebbe essere
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 2 | 8 |
| 3 | 9 |
| 4 | 7 |