MONGODB $ RANG

MONGODB $ RANG
Chaque document d'une collection reçoit un rang distinct par l'opérateur de grade $ dans MongoDB à la suite d'un ensemble de règles de tri. Le rang est déterminé par la séquence des enregistrements dans l'ensemble de résultats. Il est utilisé avec l'opération $ SetwindowFields pour ajouter un nouveau champ avec le rang fourni à chaque enregistrement. Il est simple de classer les documents selon des normes particulières, comme les scores et est utile pour des activités comme faire des classements ou produire des rapports de performance.

En utilisant une collection de résultats de test à titre d'exemple, vous pouvez utiliser l'opérateur de grade $ pour classer les participants en fonction de leurs résultats de test. Vous pouvez ensuite utiliser ce rang dans les calculs ou les requêtes ultérieures. Trouver les interprètes supérieurs et les plus bas dans un ensemble de données, ainsi que la comparaison des performances relatives de diverses personnes ou groupes, est important. Ce guide vous aide à avoir une idée de l'utilisation de l'opérateur de rang à MongoDB.

Créer la collection MongoDB

Avant de sauter au sujet, nous devrions créer un environnement sur lequel travailler. Par conséquent, nous avons déjà installé et configuré la base de données MongoDB sur notre machine. La commande ci-dessous est exécutée dans l'interface de ligne de commande MongoDB. Le «test» avant le symbole «>» indique que l'instruction est exécutée dans la base de données «Test». La commande en cours d'exécution est «db.CreateCollection («Résultat») ». Cette commande crée une nouvelle collection dans la base de données «Test» appelée «résultat». La réponse donnée est «ok: 1». Cela indique que la commande a réussi et que le «résultat» de la collection a été créé avec succès. «Test» est le nom de la base de données utilisée.

Tester> dB.CreateCollection ("résultat")
ok: 1

Insérer un enregistrement à la collection

Bien que nous ayons créé une nouvelle collection, il est toujours vide. Nous devons avoir au moins 2 enregistrements dans un «résultat» de collection pour appliquer l'opérateur de rang dessus. Le code ci-dessous insére plusieurs documents dans une collection appelée «Résultat» dans une base de données MongoDB. Chaque record couvre deux champs, «Std» et «Score». Le champ «STD» représente le nom d'un étudiant, et le champ «score» représente leur score à un test. Le code insére 15 documents au total, chaque document représentant un étudiant différent et leur score respectif.

Chaque document est séparé par une virgule et enfermé dans des accolades bouclées . Les scores vont de -2 à 99 et les noms des étudiants sont Nina, Johny, Eden, Robert et Lia. Chaque élève a au moins 2 scores utilisés pour 2 matières différentes. L'insertion de ces documents est reconnue par la base de données et le code renvoie une liste d'identifiants uniques (Objectid) pour chaque document.

Tester> dB.Résultat.INSERTMANY ([std: "nina", score: 56, std: "johny", score: 77, std: "eden", score: 32, std: "Robert", score: 96 , std: "lia", score: 12, std: "nina", score: 76, std: "johny", score: 87, std: "eden", score: 52, std: "Robert", score: 99, std: "lia", score: 42, std: "nina", score: 32, std: "johny", score: 67, std: "Eden", score: 42, std: "Robert", score: 89, std: "lia", score: -2])
Reconnu: vrai,
insertEDIDS:
'0': ObjectId ("63CD0BB2F114CB71B42E38E5"),
'1': ObjectId ("63CD0BB2F114CB71B42E38E6"),
'2': ObjectId ("63CD0BB2F114CB71B42E38E7"),
'3': ObjectId ("63CD0BB2F114CB71B42E38E8"),
'4': ObjectId ("63CD0BB2F114CB71B42E38E9"),
'5': ObjectId ("63CD0C1BF114CB71B42E38EA"),
'6': ObjectId ("63CD0C1BF114CB71B42E38EB"),
'7': ObjectId ("63CD0C1BF114CB71B42E38EC"),
'8': ObjectId ("63CD0C1BF114CB71B42E38ed"),
'9': ObjectId ("63CD0C1BF114CB71B42E38EE"),
'10': ObjectId ("63CD0CD6F114CB71B42E38EF"),
'11': ObjectId ("63CD0CD6F114CB71B42E38F0"),
'12': ObjectId ("63CD0CD6F114CB71B42E38F1"),
'13': ObjectId ("63CD0CD6F114CB71B42E38F2"),
'14': ObjectId ("63CD0CD6F114CB71B42E38F3")

Afficher les enregistrements MongoDB

Après avoir inséré les 15 enregistrements avec succès dans la collection «Résultat», nous reviendrons à nouveau tous les enregistrements. Pour cela, la commande que nous avons utilisée a été attachée ci-dessous. Cette requête utilise la méthode find () pour récupérer tous les documents d'une collection appelée «Résultat». La méthode find () est utilisée pour renvoyer un tableau de documents dans la collection «Résultat» qui correspondent à la requête spécifiée. Dans ce cas, aucune requête n'est spécifiée. Ainsi, les 15 documents de la collection «Résultat» sont retournés. Les documents de sortie contiennent trois champs: _id, std et score. Le champ _ID est un identifiant unique affecté à chaque document par MongoDB, le champ STD contient le nom de l'élève et le champ de score contient le score de test pour chaque étudiant.

Tester> dB.Résultat.trouver()
[
_id: ObjectId ("63CD0BB2F114CB71B42E38E5"), std: 'nina', score: 56,
_id: ObjectId ("63cd0bb2f114cb71b42e38e6"), std: 'johny', score: 77,
_id: ObjectId ("63CD0BB2F114CB71B42E38E7"), std: 'Eden', score: 32,
_id: ObjectId ("63CD0BB2F114CB71B42E38E8"), std: 'Robert', score: 96,
_id: ObjectId ("63CD0BB2F114CB71B42E38E9"), std: 'lia', score: 12
_id: ObjectId ("63cd0c1bf114cb71b42e38ea"), std: 'nina', score: 76,
_id: ObjectId ("63cd0c1bf114cb71b42e38eb"), std: 'johny', score: 87,
_id: ObjectId ("63CD0C1BF114CB71B42E38EC"), std: 'Eden', score: 52,
_id: ObjectId ("63cd0c1bf114cb71b42e38ed"), std: 'Robert', score: 99,
_id: ObjectId ("63cd0c1bf114cb71b42e38ee"), std: 'lia', score: 42
_id: ObjectId ("63cd0cd6f114cb71b42e38ef"), std: 'nina', score: 32,
_id: ObjectId ("63cd0cd6f114cb71b42e38f0"), std: 'johny', score: 67,
_id: ObjectId ("63cd0cd6f114cb71b42e38f1"), std: 'eden', score: 42,
_id: ObjectId ("63cd0cd6f114cb71b42e38f2"), std: 'Robert', score: 89,
_id: ObjectId ("63cd0cd6f114cb71b42e38f3"), std: 'lia', score: -2
]]

Exemple # 01: Rang en ordre décroissant

Cette commande utilise la méthode agrégate () pour effectuer une opération d'agrégation sur une collection appelée «Résultat» dans une base de données MongoDB. La méthode agrégat () prend un tableau comme argument, où chaque étape transforme les données. Dans ce cas, la première étape du pipeline utilise l'opérateur $ SetwindowFields qui définit les champs de fenêtre en partitionnant les documents par le champ «STD», en triant les documents par le champ «Score» dans l'ordre descendant (-1). Le champ de sortie est ensuite spécifié, qui crée un nouveau champ appelé «RanksCoreForstd» et attribue un rang à chaque document dans sa fenêtre à l'aide de l'opérateur de rang $.

La sortie finale montre que les documents de la collection «Résultat» avec le champ supplémentaire «RankscoreForstd» ajouté à chaque document, indiquant le rang de l'étudiant en fonction de leur score. Les enregistrements sont triés par ordre décroissant de score et regroupés par nom d'élève. Dans ce cas, le script classe les étudiants en fonction de leurs scores. L'étudiant avec le score le plus élevé obtient un rang de 1, l'étudiant avec le deuxième score le plus élevé obtient un rang de 2, et ainsi de suite.

Tester> dB.Résultat.agrégat ([$ setwindowFields: partitionby: "$ std", sortby: score: -1, output: rankscoreFORSTD: $ rank: ]))
[
_id: ObjectId ("63CD0C1BF114CB71B42E38EC"), Std: 'Eden', score: 52, RankscoreForstd: 1,
_id: ObjectId ("63cd0cd6f114cb71b42e38f1"), std: 'Eden', score: 42, RankscoreForstd: 2,
_id: ObjectId ("63CD0BB2F114CB71B42E38E7"), std: 'Eden', score: 32, RankscoreForstd: 3,
_id: ObjectId ("63cd0c1bf114cb71b42e38eb"), std: 'johny', score: 87, RanksCoreForstd: 1,
_id: ObjectId ("63cd0bb2f114cb71b42e38e6"), std: 'johny', score: 77, RanksCoreForstd: 2,
_id: ObjectId ("63cd0cd6f114cb71b42e38f0"), std: 'johny', score: 67, RanksCoreForstd: 3,
_id: ObjectId ("63CD0C1BF114CB71B42E38EE"), std: 'lia', score: 42, RankscoreForstd: 1,
_id: ObjectId ("63CD0BB2F114CB71B42E38E9"), std: 'lia', score: 12, RankscoreForstd: 2,
_id: ObjectId ("63cd0cd6f114cb71b42e38f3"), std: 'lia', score: -2, RankscoreForstd: 3,
_id: ObjectId ("63cd0c1bf114cb71b42e38ea"), std: 'nina', score: 76, RankscoreForstd: 1,
_id: ObjectId ("63CD0BB2F114CB71B42E38E5"), std: 'nina', score: 56, RanksCoreForstd: 2,
_id: ObjectId ("63cd0cd6f114cb71b42e38ef"), std: 'nina', score: 32, RankscoreForstd: 3,
_id: ObjectId ("63CD0C1BF114CB71B42E38ed"), std: 'Robert', score: 99, RankscoreForstd: 1,
_id: ObjectId ("63CD0BB2F114CB71B42E38E8"), std: 'Robert', score: 96, RankscoreForstd: 2,
_id: ObjectId ("63cd0cd6f114cb71b42e38f2"), std: 'Robert', score: 89, RankscoreForstd: 3
]]

Exemple # 02: rang dans l'ordre croissant

Dans l'illustration ci-dessus, nous avons classé les documents dans l'ordre décroissant du champ de score en utilisant la valeur du score «-1». Cette fois, nous effectuerons une opération de rang sur tous les documents dans l'ordre croissant du champ de score. Pour cela, il y a une petite modification dans la même commande d'agrégat, à partir de la méthode agrégate () qui est utilisée pour traiter les données et renvoyer le résultat sous la forme d'un ou plusieurs documents.

L'opérateur $ SetwindowFields est utilisé pour ajouter un nouveau champ à chaque document en fonction de la fonction de fenêtre spécifiée. La commande définit les champs de fenêtre en partageant les documents par le champ «STD», en triant les documents par le champ «Score» dans l'ordre croissant (1) en utilisant la valeur «1», puis en ajoutant un nouveau champ appelé «RanksCoreForstd» que attribue un rang à chaque document en fonction de la partition. La sortie montre un tableau de tous les documents de la collection «Résultat», avec un champ supplémentaire «RanksCoreForstd» pour chaque document. Dans ce cas, chaque étudiant se voit attribuer un rang unique et les documents sont triés par ordre croissant de la partition.

Tester> dB.Résultat.agrégat ([$ setwindowFields: partitionby: "$ std", sortby: score: 1, output: rankscoreforstd: $ rank: ]))
[
_id: ObjectId ("63CD0C1BF114CB71B42E38EC"), Std: 'Eden', Score: 32, RankscoreForstd: 1,
_id: ObjectId ("63cd0cd6f114cb71b42e38f1"), std: 'Eden', score: 42, RankscoreForstd: 2,
_id: ObjectId ("63CD0BB2F114CB71B42E38E7"), std: 'Eden', score: 52, RankscoreForstd: 3,
_id: ObjectId ("63cd0c1bf114cb71b42e38eb"), std: 'johny', score: 67, RanksCoreForstd: 1,
_id: ObjectId ("63cd0bb2f114cb71b42e38e6"), std: 'johny', score: 77, RanksCoreForstd: 2,
_id: ObjectId ("63cd0cd6f114cb71b42e38f0"), std: 'johny', score: 87, RanksCoreForstd: 3,
_id: ObjectId ("63CD0C1BF114CB71B42E38EE"), std: 'lia', score: -2, RankscoreForstd: 1,
_id: ObjectId ("63CD0BB2F114CB71B42E38E9"), std: 'lia', score: 12, RankscoreForstd: 2,
_id: ObjectId ("63cd0cd6f114cb71b42e38f3"), std: 'lia', score: 42, RankscoreForstd: 3,
_id: ObjectId ("63cd0c1bf114cb71b42e38ea"), std: 'nina', score: 26, RanksCoreForstd: 1,
_id: ObjectId ("63CD0BB2F114CB71B42E38E5"), std: 'nina', score: 56, RanksCoreForstd: 2,
_id: ObjectId ("63cd0cd6f114cb71b42e38ef"), std: 'nina', score: 76, RankscoreForstd: 3,
_id: ObjectId ("63CD0C1BF114CB71B42E38ed"), std: 'Robert', score: 89, RankscoreForstd: 1,
_id: ObjectId ("63CD0BB2F114CB71B42E38E8"), std: 'Robert', score: 96, RankscoreForstd: 2,
_id: ObjectId ("63CD0CD6F114CB71B42E38F2"), std: 'Robert', score: 99, RankscoreForstd: 3
]]

Conclusion

Après avoir introduit l'opérateur de rang MongoDB, nous avons discuté de son utilisation dans MongoDB. Après cela, nous avons créé un environnement sur lequel travailler et ajouté des exemples MongoDB pour illustrer plus précisément l'utilisation de l'opérateur de rang. Le premier exemple montre l'utilisation de l'opérateur de rang avec la valeur «-1» pour afficher les documents en ordre décroissant. Tandis que le deuxième exemple couvre son utilisation avec la valeur «1» pour afficher et classer les documents dans l'ordre croissant de la collection.