MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come ordinare due campi con la mangusta?

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        |