MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie sortiere ich zwei Felder mit Mungo?

Siehe sort() Definition.

sort({_id: -1, upvotes_count: -1})

bedeutet die _id sortieren sortieren Sie zuerst upvotes_count per Desc-Reihenfolge nur für diese gleichen _id Beiträge. Leider ist die _id ist ObjectId , der ein 12-Byte-BSON-Typ ist, konstruiert mit:

  • ein 4-Byte-Wert, der die Sekunden seit der Unix-Epoche darstellt,
  • eine 3-Byte-Maschinenkennung,
  • eine 2-Byte-Prozess-ID und
  • ein 3-Byte-Zähler, beginnend mit einem zufälligen Wert.

Es ist schwierig, dieselbe ObjectId zu erhalten . Nämlich die _id jedes Datensatzes sollte in diesem Dokument eindeutig sein. Als Ergebnis werden die Ergebnisse Ihrer Testcodes einfach nach _id geordnet Bez.

Hier ist ein Beispiel,

+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  1      |      5        |
|  4      |      7        |
|  3      |      9        |
|  4      |      8        |

Das Ergebnis von sort({_id: -1, upvotes_count: -1}) sollte

sein
+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  4      |      8        |
|  4      |      7        |
|  3      |      9        |
|  1      |      5        |

Der upvote_count nach derselben _id sortiert werden .

Allerdings in diesem Fall. Es gibt dieselbe _id in diesem Fall.

+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  1      |      5        |
|  4      |      7        |
|  3      |      9        |
|  2      |      8        |

Das Ergebnis von sort({_id: -1, upvotes_count: -1}) sollte

sein
+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  1      |      5        |
|  2      |      8        |
|  3      |      9        |
|  4      |      7        |