Opérateur de carte MongoDB $

Opérateur de carte MongoDB $
MongoDB est une base de données populaire axée sur le document NOSQL qui est utilisée pour stocker et interroger les grandes quantités de données. L'une des caractéristiques puissantes de MongoDB est la possibilité d'utiliser l'opérateur Map $ dans les pipelines d'agrégation pour transformer les documents d'une collection. L'opérateur $ map permet aux développeurs d'appliquer une fonction spécifique à chaque élément d'un tableau et renvoie les valeurs transformées en tant que nouveau tableau. L'opérateur $ map est utilisé dans l'étape de projet $ d'un pipeline d'agrégation et prend deux arguments: l'expression d'entrée et l'expression «As». L'expression d'entrée est le tableau que vous souhaitez transformer et l'expression «As» est la fonction que vous souhaitez appliquer à chaque élément du tableau. L'opérateur $ map renvoie un nouveau tableau avec les valeurs transformées. Nous commençons par afficher les bases de données disponibles dans MongoDB.
Test> Afficher DBS
Admin 40.00 Kib
config 112.00 Kib
Local 72.00 Kib

Utilisez la base de données «Test» pour commencer à ajouter des données dans une base de données MongoDB, I.e. «Test d'utilisation».

Test> Utiliser le test
Déjà sur le test DB

Exemple 1:

Voici un exemple d'utilisation de l'opérateur MAP $ pour carréner chaque élément d'un tableau dans une collection. Nous générons une nouvelle collection nommée «Info» dans la base de données «Test» de MongoDB en jetant la fonction de création de MongoDB. La méthode CreateCollection () renvoie un objet avec la propriété «OK» et une valeur de 1 qui indique que la collection est créée avec succès.

Tester> dB.CreateCollection ("info")
ok: 1

Une fois la collection générée, nous y insérons des enregistrements de type tableau. Par conséquent, la fonction d'insertmany est rejetée ici pour ajouter trois enregistrements, chacun contenant le champ «Arr» d'un type de tableau avec quelques valeurs numériques.

Tester> dB.Info.insertMany ([id: 1, arr: [2, 4, 6], id: 2, arr: [3, 5, 7], id: 3, arr: []])
Reconnu: vrai,
insertEDIDS:
'0': ObjectId ("63C4D968AC8011ECC27D7A35"),
'1': ObjectId ("63C4D968AC8011ECC27D7A36"),
'2': ObjectId ("63C4D968AC8011ECC27D7A37")

Après l'insertion réussie des enregistrements dans la collection «Info», vous pouvez y jeter un œil en utilisant la fonction «Find» comme nous l'avons utilisé dans la requête attachée suivante:

Tester> dB.Info.trouver()
[
_id: ObjectId ("63C4D968AC8011ECC27D7A35"), id: 1, arr: [2, 4, 6],
_id: ObjectId ("63C4D968AC8011ECC27D7A36"), ID: 2, arr: [3, 5, 7],
_id: ObjectId ("63C4D968AC8011ECC27D7A37"), id: 3, arr: []
]]

Dans cet exemple, l'opérateur de carte est utilisé pour ajouter chaque élément du tableau «Arr» pour le document pour les trois enregistrements. L'entrée de l'opérateur de carte est définie sur «$ arr» qui fait référence au tableau «arr» dans les documents de la collection «Info». Le paramètre «AS» est défini sur «n» qui est utilisé comme espace réservé pour chaque élément du tableau dans la fonction. Le paramètre «in» contient la fonction qui, dans ce cas, est l'opérateur $ ADD qui met à jour chaque élément d'un tableau «arr» en ajoutant 1. La sortie de cette opération est un nouveau tableau avec le nombre d'éléments mis à jour, mais chaque élément est la somme de l'élément d'origine et «1» comme affiché dans la sortie suivante:

Tester> dB.Info.agrégate ([$ project: a: $ map: input: "$ arr", as: "n", dans: $ add: ["$$ n", 1]]))
[
_id: ObjectId ("63C4D968AC8011ECC27D7A35"), A: [3, 5, 7],
_id: ObjectId ("63C4D968AC8011ECC27D7A36"), A: [4, 6, 8],
_id: ObjectId ("63C4D968AC8011ECC27D7A37"), A: []
]

Exemple 2:

Ayons un autre exemple d'utilisation de l'opérateur «Map» de MongoDB. En commençant par cette illustration, vous devriez créer une nouvelle collection nommée «Info» dans votre base de données de test. La méthode CreateCollection () est utilisée pour créer une nouvelle collection dans la base de données actuelle qui est «Tester». Puisque nous l'avons déjà créé via la méthode «CreateCollection» de la base de données, nous ignorons cette étape ici.

La requête suivante utilise l'interface de ligne de commande MongoDB (CLI) pour insérer plusieurs documents dans une collection appelée «données». Chaque document représente une ville et sa distance en kilomètres aux autres emplacements. La commande utilise la méthode insertMany () pour insérer les trois documents à la fois. Chaque document a un champ «ville» avec une valeur de chaîne et un champ «Distance» avec un tableau de nombres. La méthode insertmany () renvoie un objet avec les propriétés «reconnue» et «insertEDID» qui confirme que l'opération est réussie et fournit les objets uniques qui sont affectés à chaque document inséré.

Tester> dB.Données.INSERTMANY (["City": "Newyork", "Distance": [22.56, 66.7, 88.1],
… "City": "Londres", "Distance": [77.76, 14.72, 11.56],
… "City": "Texas", "Distance": [44.70, 64.99, 94.6]])

Reconnu: vrai,
insertEDIDS:
'0': ObjectId ("63C4E24CAC8011ECC27D7A38"),
'1': ObjectId ("63C4E24CAC8011ECC27D7A39"),
'2': ObjectId ("63C4E24CAC8011ECC27D7A3A")

Cette requête est utilisée pour récupérer tous les documents d'une collection appelée «données». La méthode find () est utilisée avec une requête vide , ce qui signifie qu'il renvoie tous les documents de la collection. La sortie est un tableau de documents qui correspondent à la requête où chaque document a un champ «_id» qui est un objectif unique qui lui est attribué, un champ «ville» avec une valeur de chaîne et un champ «Distance» avec un tableau de nombres. Cette requête montre tous les documents qui ont été insérés.

Tester> dB.Données.trouver()
[
_id: ObjectId ("63C4E24CAC8011ECC27D7A38"), Ville: 'Newyork', Distance: [22.56, 66.7, 88.1 ] ,
_id: ObjectId ("63C4E24CAC8011ECC27D7A39"), Ville: «Londres», Distance: [77.76, 14.72, 11.56],
_id: ObjectId ("63C4E24CAC8011ECC27D7A3A"), Ville: 'Texas', Distance: [44.7, 64.99, 94.6]
]]

La requête suivante utilise la base de données «Tester» MongoDB pour effectuer une opération globale sur la collection «Data». La méthode agrégate () est utilisée avec un tableau qui contient une étape de pipeline unique qui est l'étape du projet $. L'étape du projet $ est utilisée pour remodeler les documents de la collection en spécifiant un nouvel ensemble de champs. Dans ce cas, le champ de la ville est passé et un nouveau champ, «adj», est ajouté. Le nouveau champ «adj» est créé à l'aide de l'opérateur MAP $ qui applique une expression spécifiée à chaque élément d'un tableau d'entrée et renvoie un tableau de sortie avec le même nombre d'éléments.

L'opérateur $ map prend trois arguments: le tableau d'entrée qui est «$ distance», un nom de variable pour l'élément actuel du tableau d'entrée qui est «DC», et une expression qui est appliquée à chaque élément du tableau d'entrée. Dans ce cas, l'expression est de tronquer la valeur décimale de la distance à l'aide de l'opérateur $ trunc. Le résultat est un tableau de documents avec la même structure que les documents originaux, mais avec un champ «adj» supplémentaire qui contient un tableau d'entiers tronqué du champ «Distance».

Tester> dB.Données.agrégat ([$ project: City: "$ City", adj:
… $ Map: entrée: "$ Distance", as: "dc", dans: $ trunc: "$$ dc"])
[
_id: ObjectId ("63C4E24CAC8011ECC27D7A38"), ville: 'Newyork', adj: [22, 66, 88],
_id: ObjectId ("63C4E24CAC8011ECC27D7A39"), ville: 'Londres', adj: [77, 14, 11],
_id: ObjectId ("63C4E24CAC8011ECC27D7A3A"), ville: 'Texas', adj: [44, 64, 94]
]]

Conclusion

Ce guide élabore très clairement sur l'utilisation de l'opérateur «Map» dans MongoDB dans son introduction. Pour soutenir l'explication que nous avons fournie dans l'introduction, nous avons expliqué deux exemples connexes dans cet article. En parcourant ces exemples, vous pouvez ajouter une valeur à un élément de tableau d'un document particulier et peut tronquer les décimaux des éléments de tableau spécifiques. En conclusion, l'opérateur $ map de MongoDB est une fonctionnalité puissante qui permet aux développeurs de transformer les tableaux de documents dans une collection. Il est facile à utiliser et peut être utilisé en combinaison avec les autres opérateurs d'agrégation pour effectuer des transformations plus complexes. Avec $ map, les développeurs peuvent facilement manipuler les données et les rendre plus utiles pour leurs applications.