Gamme mongodb $

Gamme mongodb $
L'opérateur MongoDB $ Range est un opérateur personnalisé qui génère un tableau de nombres en fonction d'une valeur de démarrage, d'une valeur finale et d'une valeur de pas données. Cet opérateur est un outil utile pour générer des séquences de nombres à utiliser dans la manipulation ou l'analyse des données. Il est généralement utilisé comme composant de l'opérateur de projet $ dans un pipeline agrégé, pour créer un nouveau champ dans les documents de sortie qui contiennent un tableau de nombres. Il faut un total de trois arguments: la valeur de départ, le nom de champ sur lequel le champ de plage sera appliqué, et le nombre d'incrément à la valeur d'incrément jusqu'à ce qu'il atteigne le dernier point d'une valeur de champ. Ce guide va expliquer et démontrer l'utilisation de l'opérateur «gamme» de MongoDB à l'aide de quelques exemples.

Exemple # 01:

Assurez-vous que votre base de données MongoDB est déjà configurée sur votre machine. Sinon, essayez de l'installer avec la création d'une collection dedans. La collection doit avoir des enregistrements. Nous avons configuré notre base de données MongoDB en créant une collection nommée «Dummy» et y avons ajouté quelques documents. Il est temps d'utiliser l'opérateur de gamme sur une collection factice. Avant cela, nous afficherons les documents que nous avons dans notre collection factice. L'instruction indiquée ci-dessous est exécutée dans le shell MongoDB à cet effet. La commande utilise la méthode «find ()» pour rechercher tous les documents d'une collection appelée «mannequin» avec les accolades bouclées vides «». Aucun critère de recherche spécifique n'est utilisé, donc tous les enregistrements de la collection «factice» seront affichés.

La sortie de la commande est un tableau de documents, chaque enregistrement contenant plusieurs champs. Les champs incluent un «_id» objetId unique de chaque enregistrement, le champ de la ville représente le nom d'une ville, le champ Count représente un champ numérique, le champ desc représente une chaîne décrivant la ville, et le champ aléatoire représente une valeur numérique aléatoire.

Tester> dB.Factice.trouver()
[_id: ObjectId ("63C8A1F94FF07039AA6CDF6B"), Ville: 'Texas', Count: 3, Desc: 'Mility City', aléatoire: 81,
_id: ObjectId ("63C8A1F94FF07039AA6CDF6C"), ville: 'Los Angeles', Count: 3, Desc: 'Mid size City', aléatoire: 5,
_id: ObjectId ("63C8A1F94FF07039AA6CDF6D"), Ville: 'Italie', Count: 10, desc: 'le plus beau et bondé', aléatoire: 12,
_id: ObjectId ("63C8A1F94FF07039AA6CDF6E"), Ville: 'Istanbul', Count: 3, Desc: 'Mid size City', aléatoire: 95,
_id: ObjectId ("63C8A1F94FF07039AA6CDF6F"), ville: 'Delhi', Count: 3, desc: 'Mility City', aléatoire: 22]

Il est temps d'appliquer le champ «Range» sur tous les enregistrements d'une collection MongoDB «manuelle» pour obtenir la gamme de nombres. La commande de l'application de l'opérateur de plage a été attachée en dessous. Il utilise la méthode «Aggregate ()» pour effectuer une opération d'agrégat sur une collection appelée «Dummy». L'opérateur «$ project» est utilisé pour remodeler les documents d'une collection en incluant ou en excluant les champs et peut également créer de nouveaux champs. Dans ce cas, l'opérateur «$ Project» est utilisé pour créer un nouveau champ appelé «REST» qui est un tableau contenant une gamme de nombres de 0 à la valeur du champ «aléatoire» dans chaque document, incréments de 10. La sortie de la commande montre un tableau d'enregistrements, le champ de repos représente un nouveau tableau contenant une gamme de nombres basés sur la valeur du champ «aléatoire» et le champ «ville» avec le nom d'une ville spécifique. Le point de repos peut être deviné à partir de la gamme fournie dans le champ du tableau «REST».

Tester> dB.Factice.agrégat ([$ project: City: 1, "rest": $ range: [0, "$ random", 10]]))
[_id: ObjectId ("63C8A1F94FF07039AA6CDF6B"), ville: 'Texas', repos: [0, 10, 20, 30, 40, 50, 60, 70, 80],
_id: ObjectId ("63c8a1f94ff07039aa6cdf6c"), ville: 'Los Angeles', repos: [0],
_id: ObjectId ("63C8A1F94FF07039AA6CDF6D"), ville: 'Italie', repos: [0, 10],
_id: ObjectId ("63C8A1F94FF07039AA6CDF6E"), ville: 'Istanbul', repos: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90],
_id: ObjectId ("63c8a1f94ff07039aa6cdf6f"), ville: 'Delhi', repos: [0, 10, 20]]

Exemple # 02:

Laissez-nous voir un autre exemple pour utiliser le champ de plage sur la collection MongoDB. La collection «test» a été utilisée dans cet exemple jusqu'à présent. L'instruction «Find» ci-dessous a affiché le contenu de cette collection. La sortie de la commande contient l'identifiant unique affecté à chaque document par MongoDB, le champ «S» représente le numéro de point de départ et le champ «E» représente le numéro de point de fin.

Tester> dB.Test.trouver()
[_id: ObjectId ("63CB65F0BEF5ADFC81DF628E"), S: 2, E: 8,
_id: ObjectId ("63CB65F0BEF5ADFC81DF628F"), S: 1, E: 5,
_id: ObjectId ("63CB65F0BEF5ADFC81DF6290"), S: 4, E: 9]

La sortie montre que le tableau est créé à l'aide de l'opérateur de gamme $, qui prend deux arguments: la valeur de départ et la valeur de fin. La valeur de départ est le champ «S» et la valeur de fin est le champ «E» dans le document. La sortie finale de cette commande est une liste de documents, chacun avec un _id, un champ «S», un champ «E» et un champ «R» qui contient un tableau d'entiers. Les entiers dans le champ «R» sont la gamme de nombres entre les champs «S» et «E» pour chaque document: chacun avec un incrément de 1. En effet. Ainsi, l'opérateur «Range» a pris «1» comme valeur d'incrément par elle-même.

Tester> dB.Test.agrégat ([$ project: s: 1, e: 1, "r": $ range: ["$ s", "$ e"]])
[_id: ObjectId ("63CB65F0BEF5ADFC81DF628E"), S: 2, E: 8, R: [2, 3, 4, 5, 6, 7],
_id: ObjectId ("63CB65F0BEF5ADFC81DF628F"), S: 1, E: 5, R: [1, 2, 3, 4],
_id: ObjectId ("63CB65F0BEF5ADFC81DF6290"), S: 4, E: 9, R: [4, 5, 6, 7, 8]]

Exemple # 03:

Dans toutes les illustrations ci-dessus, nous n'avons appliqué que l'opérateur de plage sur les champs des collections ayant des valeurs de type entier. Nous obtiendrons une erreur lorsque nous appliquerons l'opérateur de plage sur la valeur de type de chaîne. Et si nous l'appliquons aux valeurs de champ de type décimal? Vérirons cela en l'appliquant à une nouvelle collection nommée «Float» dans notre base de données MongoDB. La fonction find () appliquée à la collection «float» montre les 5 ensembles de documents. Chaque document contient son identifiant unique, le champ de type de chaîne «Title» et «l'âge de type flotteur« Age »contenant des valeurs de point décimal.

Tester> dB.Flotter.trouver()
[ot.6,
_id: ObjectId ("63CB5F26BEF5ADFC81DF628A"), titre: 'ana', âge: 22.75,
_id: ObjectId ("63CB5F26BEF5ADFC81DF628B"), Titre: 'Eden', Age: 35.9,
_id: ObjectId ("63CB5F26BEF5ADFC81DF628C"), Titre: 'Rock', Age: 82.5,
_id: ObjectId ("63CB5F26BEF5ADFC81DF628D"), titre: 'lia', âge: 27]

Maintenant, nous avons appliqué l'opérateur «Range» sur la collection de flotteurs en utilisant la fonction agrégée pour obtenir la plage de nombres avec une augmentation de 11 pour le champ «Age». Ce code, cependant, génère une erreur car l'opérateur de gamme $ exige que la valeur finale soit un entier 32 bits, mais la valeur du champ «Age» est un numéro de point flottant et il ne peut pas être converti en 32- bit entier. Cela montre que nous ne pouvons pas appliquer l'opérateur de plage sur un autre type de données à l'exception du type de données entier dans la base de données MongoDB.

Tester> dB.Flotter.agrégat ([$ project: title: 1, "rest": $ range: [0, "$ age", 11]])

MongoServerError: PlanexecUtor Erreur pendant l'agrégation :: causée par :: $ Range nécessite une valeur de fin qui peut être représentée comme un entier 32 bits, valeur trouvée: 45.6.

Conclusion

Nous avons informé le concept de l'opérateur de gamme utilisé dans la fonction d'agrégat MongoDB. Après avoir défini l'utilisation de l'opérateur de gamme, nous avons expliqué son utilisation à l'aide de trois exemples distincts de commandes MongoDB dans le shell. La première illustration montre l'utilisation de l'opérateur de plage sur le champ de type entier pour obtenir la séquence de nombres avec le numéro d'incrément spécifique. Les deuxièmes illustrations montrent comment un opérateur de plage peut être appliqué au champ Start and End sans utiliser le numéro d'incrément. Tandis que le dernier exemple montre que l'opérateur de plage ne fonctionne pas sur des types de données autres que les entiers: flotteurs et chaînes.