Prêt à vous familiariser avec MongoDB, l'une des technologies les plus cool pour les développeurs Web?
Dans cette nouvelle série, vous passerez de débutant à professionnel et pourrez utiliser Mongo aussi facilement que MySQL dans vos applications Web. Mais d'abord, regardons les bases.
Et si vous pouviez stocker les modèles programmatiques presque exactement comme vous les modéliez?
Dans le développement orienté objet, nous sommes encouragés à aborder le développement de code par le biais de modèles logiques, afin de pouvoir le conceptualiser plus facilement dans notre esprit. Lorsque nous faisons cela, nous pouvons mieux discerner les opérations logiques utilisées pour interagir avec elle et les informations qu’elle contiendrait à des moments différents..
Et si vous pouviez stocker les modèles programmatiques presque exactement comme vous les modéliez? Et si vous pouviez les stocker tels quels à la place d'une série de lignes dans des tables? En apprenant sur MongoDB, vous pourrez faire exactement cela.!
Dans cette série, nous allons tout apprendre des bases de MongoDb, telles que la création, la mise à jour et la suppression de bases de données et d’enregistrements, et pouvoir effectuer des recherches complexes de données et d’extraction de données élémentaires avec MapReduce. Alors, sans plus tarder - commençons!
Remarque: Ce didacticiel est conçu sous l’angle des systèmes basés sur NIX tels que Mac OSX, Linux BSD, etc. Mais vous devriez pouvoir suivre si vous utilisez Windows plutôt bien car il existe des versions pour la plupart des plateformes..
Ok, alors voici où commence le plaisir. Nous allons commencer par installer Mongo. Accédez au site Web MongoDb et cliquez sur le lien de téléchargement..
Cela vous mènera à une page où vous pourrez récupérer une version pour votre plate-forme et votre architecture..
Ce tutoriel ne couvre que les versions stables, aussi, n’allez pas chercher une version nocturne. Une fois téléchargé, installez-le conformément aux exigences de votre plate-forme..
Si vous utilisez une machine Nix, veuillez utiliser son gestionnaire de paquets pour installer la dernière version pour votre plate-forme..
Avec cela en dehors du chemin, allumez un terminal et tapez mongo
. Cela ouvrira le shell Mongo et nous permettra de nous mettre en route. Tout va bien, vous verrez une sortie semblable à celle ci-dessous:
Si vous voyez cela, alors vous êtes prêt à partir.
Initialement, aucune base de données n'est créée. Mais ne vous inquiétez pas, ils seront instantanément créés lorsque nous commencerons à insérer nos enregistrements, ce que nous allons faire maintenant. Copiez le contenu ci-dessous et collez-le dans votre mongo
coquille
db.nettuts.insert (first: 'matthew', last: 'setter', dob: '21 / 04/1978 ', genre:' m ', hair_colour:' brown ', métier:' developer ', nationalité:' australien '); db.nettuts.insert (premier: 'james', dernier: 'caan', dob: '26 / 03/1940 ', genre:' m ', couleur des cheveux:' brun ', profession:' acteur ', nationalité:' américain' ); db.nettuts.insert (premier: 'arnold', dernier: 'schwarzenegger', dob: '03 / 06/1925 ', genre:' m ', couleur des cheveux:' brun ', occupation:' acteur ', nationalité:' américain' ); db.nettuts.insert (premier: 'tony', dernier: 'curtis', dob: '21 / 04/1978 ', genre:' m ', couleur des cheveux:' brown ', occupation:' developer ', nationalité:' américain' ); db.nettuts.insert (premier: 'jamie lee', dernier: 'curtis', dob: '22 / 11/1958 ', genre:' f ', couleur des cheveux:' brown ', occupation:' acteur ', nationalité: 'américain' ); db.nettuts.insert (premier: 'michael', dernier: 'caine', dob: '14 / 03/1933 ', genre:' m ', couleur des cheveux:' brun ', occupation:' acteur ', nationalité:' Anglais' ); db.nettuts.insert (premier: 'judi', dernier: 'dench', dob: '09 / 12/1934 ', genre:' f ', couleur des cheveux:' blanc ', profession:' actrice ', nationalité:' Anglais' );
Tout bon? Excellent! Pour confirmer que la base de données et les enregistrements associés ont été créés, tapez la commande suivante:
db.nettuts.find ()
Si tout se passe comme prévu, vous verrez alors le résultat suivant:
Cela montre que tous les enregistrements ont été créés dans la base de données. Une chose à noter avant d’aller plus loin est la identifiant
champ. Ceci est automatiquement généré par Mongo pour vous, si vous ne spécifiez pas d’identifiant. La raison en est que chaque enregistrement doit avoir un unique identifiant
champ.
Vous pouvez voir que nous avons un enregistrement pour chacun de ceux que nous avons insérés - nous sommes maintenant prêts à les interroger..
Vous vous souvenez de la commande précédente? Il a récupéré et affiché chaque enregistrement de la base de données. Utile, oui, mais comment êtes-vous plus précis? Comment trouvez-vous tous les acteurs féminins, filtrant les hommes? C'est une bonne question et la réponse est sélecteurs.
Les sélecteurs sont à Mongo quoi où
les clauses sont à SQL. Comme pour les clauses where, les sélecteurs Mongo nous permettent d'effectuer les tâches suivantes:
DOIT
rencontre. c'est-à-dire un ET
clausePOUVEZ
éventuellement correspondre. c'est-à-dire un OU
clauseDOIT
exister Commençons par un sélecteur de base. Disons que nous voulons trouver tous les acteurs qui sont des femmes
. Pour ce faire, vous devez exécuter la commande suivante:
db.nettuts.find (gender: 'f');
Ici, nous avons spécifié que le genre doit être égal 'f'.
L'exécution de cette commande retournera le résultat suivant:
Et si nous voulions rechercher des acteurs masculins? Exécutez la commande suivante:
db.nettuts.find (gender: 'm');
Nous obtiendrons les résultats suivants:
Intensifions un cran. Nous rechercherons des acteurs masculins qui sont anglais.
db.nettuts.find (genre: 'm', $ ou: [nationalité: 'anglais']);
En cours d'exécution, les résultats suivants seront renvoyés:
Qu'en est-il des acteurs masculins anglais ou américains? Facile! Réglons notre commande précédente pour inclure les Américains:
db.nettuts.find (genre: 'm', $ ou: [nationalité: 'anglais', nationalité: 'américain']);
Pour cette requête, nous verrons les résultats suivants:
Et si nous voulions trier les enregistrements, par prénom ou par nationalité? Similaire à SQL, Mongo fournit la Trier
commander. La commande, comme la trouver
commande prend une liste d'options pour déterminer l'ordre de tri.
Contrairement à SQL, cependant, nous spécifions différemment selon que vous augmentez ou décroît. Nous faisons cela comme suit:
Regardons un exemple:
db.nettuts.find (genre: 'm', $ ou: [nationalité: 'anglais', nationalité: 'américain'). sort (nationalité: -1);
Cet exemple récupère tous les acteurs, hommes, anglais ou américains, et les trie par ordre décroissant de nationalité..
Qu'en est-il du tri par nationalité en ordre décroissant et par nom en ordre croissant? Aucun problème du tout! Regardez la requête ci-dessous, qui est une version modifiée de la dernière que nous avons exécutée.
db.nettuts.find (genre: 'm', $ ou: [nationalité: 'anglais', nationalité: 'américain'). sort (nationalité: -1, premier: 1);
Cette fois, nous récupérons les résultats suivants:
Vous pouvez voir que cette fois Arnold Schwarzenegger est placé devant Tony Curtis.
Et si nous avions un ensemble de données assez volumineux (heureusement, nous ne le faisons pas) et si nous voulions limiter les résultats à 2? Mongo fournit la commande limit, similaire à MySQL et nous permet de faire exactement cela. Mettons à jour notre requête précédente et ne renvoyons que 2 enregistrements. Regardez la commande suivante:
db.nettuts.find (genre: 'm', $ ou: [nationalité: 'anglais', nationalité: 'américain'). limite (2);
A partir de cette commande, nous obtiendrons les résultats suivants:
Si nous voulions les troisième et quatrième enregistrements, c’est-à-dire sauter les deux premiers? Encore une fois, Mongo a une fonction pour cela. Jetez un coup d'œil à la personnalisation ultérieure de la commande précédente:
db.nettuts.find (genre: 'm', $ ou: [nationalité: 'anglais', nationalité: 'américain'). limite (2) .skip (2);
En cours d'exécution, les résultats suivants seront renvoyés:
Vous pouvez voir dans le jeu de résultats d'origine que les deux premiers ont été ignorés.
Comme prévu, Mongo fournit également une option pour mettre à jour les enregistrements. Comme avec le trouver
méthode et les requêtes SQL, vous devez spécifier les critères de l'enregistrement que vous souhaitez modifier, puis les données de cet enregistrement à modifier.
Disons que nous devons mettre à jour le dossier de James Caan en précisant que ses cheveux sont gris, pas bruns. Eh bien pour cela, nous exécutons la fonction de mise à jour. Regardez l'exemple ci-dessous:
db.nettuts.update (premier: 'james', dernier: 'caan', $ set: hair_colour: 'brown'
Maintenant, quand vous courez ça, si tout va bien, rien n’indiquera si c’est un succès ou un échec. Pour savoir si le dossier a été mis à jour correctement, nous devons le rechercher. Alors faisons ça.
db.nettuts.find (first: 'james', last: 'caan');
Après cela, vous verrez le résultat suivant:
Cela montre que la mise à jour a fonctionné. Un mot de prudence cependant, si vous ne passez pas dans le $ set
modificateur, alors vous remplacer le disque, si c'est disponible, au lieu de mise à jour. Faites attention!
Je pense qu'à ce stade, vous avez vraiment commencé à avoir l'idée de travailler avec Mongo. En effet, si vous souhaitez supprimer un enregistrement, vous devez transmettre un ensemble de sélecteurs, comme vous le feriez également avec SQL, pour déterminer l'ensemble des enregistrements à supprimer. Si vous ne le faites pas, vous supprimerez tous les enregistrements - et la base de données.
Alors, disons que nous ne voulons pas de James Caan dans notre liste d’acteurs. Supprimons-le de la base de données à l'aide de la commande suivante:
db.nettuts.remove (first: 'james', last: 'caan');
Comme pour la mise à jour, aucune sortie visible n'est fournie pour indiquer si nous avons réussi ou non. Faisons donc une recherche pour vérifier.
db.nettuts.find (first: 'james', last: 'caan');
Après cela, aucun résultat ne devrait être renvoyé. Si c'est ce que vous avez trouvé, nous avons supprimé James Caan de notre base de données. Mais que faire si nous voulons supprimer tous les enregistrements de la base de données?
Eh bien, pour ce faire, il suffit de supprimer les sélecteurs de l'appel précédent pour supprimer, comme ci-dessous.
db.nettuts.remove (); db.nettuts.find ();
Après avoir exécuté les deux commandes ci-dessus, nous ne verrons aucune sortie indiquant que la base de données contenant tous les enregistrements a maintenant été supprimée..
Dans cette introduction rapide à l’utilisation de MongoDB, nous avons examiné:
Grâce à ces connaissances, vous pourrez vous exercer, et en apprendre davantage sur cette technologie merveilleuse. Si vous souhaitez plus d'informations, n'hésitez pas à consulter le site Web MongoDb ou à suivre @mongodb sur Twitter.
Dans le prochain tutoriel, nous allons commencer à en apprendre plus sur les requêtes complexes. Alors restez à l'écoute et merci beaucoup d'avoir lu.
Mettre à jour: La deuxième partie de cette série a été publiée et peut être trouvée ici..