sql >> Databáze >  >> NoSQL >> MongoDB

Jak seřadit dvě pole s mangustou?

Viz sort() definice.

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

znamená seřadit _id nejprve seřaďte upvotes_count podle objednávky popisu pouze pro stejné _id příspěvky. Bohužel _id je ObjectId , což je 12bajtový typ BSON, vytvořený pomocí:

  • 4bajtová hodnota představující sekundy od epochy Unixu,
  • 3bajtový identifikátor počítače,
  • 2bajtové ID procesu a
  • 3bajtový čítač začínající náhodnou hodnotou.

Je těžké získat stejné ObjectId . Konkrétně _id každý záznam by měl být v tomto dokumentu jedinečný. Výsledkem je, že výsledky vašich testovacích kódů jsou seřazeny podle _id popis

Zde je jeden příklad,

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

Výsledek sort({_id: -1, upvotes_count: -1}) by mělo být

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

upvote_count by byly seřazeny podle stejného _id .

Nicméně v tomto případě. Existuje stejné _id v tomto případě.

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

Výsledek sort({_id: -1, upvotes_count: -1}) by mělo být

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


  1. Spring Data MongoDB agregace - shoda podle vypočtené hodnoty

  2. Jak sdělit klientovi, kde nový master Redis používá Sentinel

  3. SQLite na Androidu a MongoDB se synchronizací

  4. Vyjasnění ReactiveMongo FindAndModify