MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como classificar dois campos com mangusto?


Consulte sort() definição.

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

significa classificar o _id primeiro, classifique upvotes_count por ordem desc apenas para aqueles mesmos _id Postagens. Infelizmente, o _id é ObjectId , que é do tipo BSON de 12 bytes, construído usando:
  • um valor de 4 bytes representando os segundos desde a época do Unix,
  • um identificador de máquina de 3 bytes,
  • um ID de processo de 2 bytes e
  • um contador de 3 bytes, começando com um valor aleatório.

É difícil obter o mesmo ObjectId . Ou seja, o _id de cada registro deve ser único neste documento. Como resultado, o resultado de seus códigos de teste é ordenado apenas por _id descrição

Aqui está um exemplo,
+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  1      |      5        |
|  4      |      7        |
|  3      |      9        |
|  4      |      8        |

O resultado de sort({_id: -1, upvotes_count: -1}) deveria estar
+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  4      |      8        |
|  4      |      7        |
|  3      |      9        |
|  1      |      5        |

O upvote_count seria classificado para o mesmo _id .

No entanto, neste caso. Existe no mesmo _id nesse caso.
+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  1      |      5        |
|  4      |      7        |
|  3      |      9        |
|  2      |      8        |

O resultado de sort({_id: -1, upvotes_count: -1}) deveria estar
+---------+---------------+
| _id     |  upvote_count |
+---------+---------------+
|  1      |      5        |
|  2      |      8        |
|  3      |      9        |
|  4      |      7        |