Projection dans MongoDB [avec exemples]

Publié: 2020-09-15

MongoDB est l'une des bases de données modernes les plus célèbres pour gérer et gérer le Big Data. Il s'agit d'une base de données orientée document NoSQL qui utilise des documents de type JSON pour faciliter la gestion des données.

Diverses idées de projets MongoDB peuvent être facilement concrétisées. Cependant, MongoDB présente également quelques inconvénients. Par défaut, toute requête pour un document spécifique affichera toutes les données - ce problème est résolu à l'aide de la projection MongoDB .

Table des matières

Qu'est-ce que la projection dans MongoDB ?

La projection dans MongoDB limite la sortie des données à des champs spécifiés au lieu de les afficher tous. Cela se fait à l'aide de la méthode find(). La méthode find() accepte un paramètre facultatif qui nous permet d'inclure ou d'exclure certains champs de sortie. Approfondissons l'utilisation de la projection dans MongoDB .

Syntaxe de la méthode Find()

La projection dans MongoDB est faite à l'aide de la méthode find() dont la syntaxe est :

db. nom_collection .find({}, { field_Key:1 or 0 })

Dans la syntaxe ci-dessus, collection_name est le document à partir duquel nous devons récupérer les données. Ensuite, il y a deux paramètres dans la méthode find() - le premier accepte une requête et le second est utilisé pour la projection. Le field_Key dans la syntaxe est le nom du champ que nous voulons inclure ou exclure.

Nous devons passer une valeur booléenne pour chaque field_ Key . Cette valeur définit si nous voulons inclure le champ ou l'exclure. Si nous saisissons 1 dans un champ, il sera affiché dans les résultats, et si nous incluons 0, il sera masqué.

La base de données exemple

Créons un exemple de document dans une base de données afin que nous puissions nous y référer tout au long de cet article.

db.example.studentData([

{_id : ObjectId("59kf63795bc1d"), nom_étudiant : "Alexandre", identifiant_étudiant : 01, statut_étudiant : "A", âge_étudiant : 22}

{_id : ObjectId("59ke62794bc1d"), nom_élève : "Steve", identifiant_élève : 02, statut_élève : "A", âge_élève : 23}

{_id : ObjectId("59kg73795bf1e"), nom_élève : "Luc", identifiant_élève : 03, statut_élève : "A", âge_élève : 21}

{_id : ObjectId("59kb69995ah1d"), nom_élève : "Bravo", identifiant_élève : 04, statut_élève : "B", âge_élève : 25}

])

Il s'agit de notre document de base de données nommé exemple que nous utiliserons comme référence dans tous nos exemples.

Récupérer des données avec et sans projection dans MongoDB

1. La syntaxe pour récupérer sans projection

Récupération de tous les champs (comme n'utilisant pas la projection) des étudiants avec student_status : "A".

db.example.find({student_status : "A"})

Cela correspond à Select * from example WHERE student_status = "A" query in SQL. Récupérer des données sans projection dans MongoDB produira le résultat suivant :

{"_id": ObjectId("59kf63795bc1d"), "student_name": "Alexander", "student_id": 01, "student_status": "A", student_age : 22}

{“_id” : ObjectId(“59ke62794bc1d”), “student_name” : "Steve", "student_id": 02, "student_status": "A", "student_age": 23}

{"_id": ObjectId("59kg73795bf1e"), "student_name": "Luc", "student_id": 03, "student_status": "A", student_age : 21}

Par défaut, il affiche tous les champs des données où student_status = "A". Pour limiter les champs de sortie, nous pouvons utiliser la projection dans MongoDB .

2. La syntaxe pour récupérer avec projection

Récupération de student_name et student_status de tous les étudiants.

db.example.find({}, {nom_étudiant : 1, statut_étudiant : 1})

Cela affichera le résultat suivant :

{"_id": ObjectId ("59kf63795bc1d"), "nom_étudiant": "Alexandre", "statut_étudiant": "A"}

{"_id": ObjectId ("59ke62794bc1d"), "nom_étudiant": "Steve", "statut_étudiant": "A"}

{"_id": ObjectId ("59kg73795bf1e"), "nom_étudiant": "Luc", "statut_étudiant": "A"}

{"_id": ObjectId ("59kb69995ah1d"), nom_étudiant : "Bravo", statut_étudiant : "B"}

Le _id est affiché par défaut lors de l'utilisation de la projection dans MongoDB, sauf si nous le supprimons.

Suppression de _id lors de l'utilisation de la projection dans MongoDB

Suppression du _id par défaut et affichage de student_id, student_name et student_status de tous les étudiants.

db.example.find({}, {_id : 0, student_id : 1, student_name : 1, student_status : 1})

Cela produira le résultat suivant :

{"student_id": 01, "student_name": "Alexandre", "student_status": "A"}

{"student_id": 02, "student_name": "Steve", "student_status": "A"}

{"student_id": 03, "student_name": "Luc", "student_status": "A"}

{"student_id": 04, "student_name": "Bravo", student_status : "B"}

3. Combiner inclusion et exclusion

Hors _id et student_id, y compris student_name et student_status de tous les étudiants.

db.example.find({}, {_id : 0, student_id : 0, student_name : 1, student_status : 1})

Cela produira le résultat suivant :

Erreur : erreur : {

"WaitedMS" : NumberLong(0),

"d'accord" : 0,

"errmsg" : "La projection ne peut pas avoir un mélange d'inclusion et d'exclusion.",

"code" : 2

}

La combinaison de l'inclusion et de l'exclusion lors de l'utilisation de la projection MongoDB générera une erreur car nous ne pouvons pas effectuer les deux dans la même requête. Le champ _id est une exception à cette règle.

Vous auriez remarqué que nous avions utilisé une combinaison d'inclusion et d'exclusion dans notre exemple précédent où nous avons supprimé _id et montré d'autres champs, et cela a bien fonctionné. En raison de l'exception à la règle, nous avions exclu _id et inclus le reste des champs.

4. Spécification de la projection dans MongoDB par exclusion

En excluant _id et student_status de tous les étudiants et en affichant les autres champs.

db.example.find({}, {_id : 0, statut_étudiant : 0})

{« nom_étudiant » : « Alexandre », « id_étudiant » : 01, « âge_étudiant » : 22}

{“student_name” : "Steve", "student_id": 02, "student_age": 23}

{“student_name” : "Luc", "student_id": 03, "student_age": 21}

{"student_name": "Bravo", "student_id": 04, "student_age": 25}

Vous pouvez également utiliser les quatre opérateurs de projection pour limiter les champs de sortie, mais ils ne sont pas pris en charge par la méthode find(). Les opérateurs de projection qui peuvent être utilisés sont- $, $elemMatch, $slice et $meta.

Lisez aussi: Cas d'utilisation réels de MongoDB

Conclusion

Avec l'utilisation de la projection dans MongoDB , nous pouvons prendre le contrôle de l'affichage des données dans le frontal, ce qui augmente ses cas d'utilisation réels . MongoDB a franchi plusieurs étapes ces dernières années. Cela a rendu la portée future de MongoDB brillante, et de nombreuses entreprises recherchent des développeurs full-stack connaissant MongoDB.

C'est donc le moment idéal pour inclure les compétences de MongoDB dans votre CV. Mais alors, la seule gestion d'une base de données ne suffit pas dans le monde concurrentiel d'aujourd'hui. Par conséquent, il serait utile que vous visiez à devenir un développeur full-stack ou à apprendre l'analyse commerciale pour comprendre et analyser les données que vous gérez et aider les entreprises à bien performer. upGrad peut vous aider à démarrer.

Chez upGrad, nous fournissons des sources d'apprentissage détaillées ainsi qu'une expérience pratique et une assistance au travail. Nous avons collaboré avec plusieurs instituts pour vous offrir le meilleur de l'éducation et de la certification. Vous pouvez choisir si vous souhaitez vous inscrire au cours de certification Business Analytics ou opter pour un cours de diplôme PG de développement de logiciels Full-stack . Quelle que soit la carrière que vous souhaitez poursuivre dans votre vie, nous avons ce qu'il vous faut.

Apprenez des cours de développement de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Menez la révolution technologique axée sur les données

Programme de certificat avancé en Big Data de l'IIIT Bangalore