MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment trier deux champs avec mangouste ?

Reportez-vous à sort() définition.

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

signifie trier le _id d'abord, puis triez upvotes_count par ordre desc uniquement pour ceux même _id des postes. Malheureusement, le _id est ObjectId , qui est de type BSON de 12 octets, construit à l'aide :

  • une valeur de 4 octets représentant les secondes depuis l'époque Unix,
  • un identifiant de machine de 3 octets,
  • un identifiant de processus de 2 octets, et
  • un compteur de 3 octets, commençant par une valeur aléatoire.

Il est difficile d'obtenir le même ObjectId . A savoir, le _id de chaque enregistrement doit être unique dans ce document. Par conséquent, le résultat de vos codes de test est simplement classé par _id description

Voici un exemple,

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

Le résultat de sort({_id: -1, upvotes_count: -1}) devrait être

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

Le upvote_count serait trié pour le même _id .

Cependant, dans ce cas. Il y a sur le même _id dans ce cas.

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

Le résultat de sort({_id: -1, upvotes_count: -1}) devrait être

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