Débuter avec MongoDB pour Node.js

Vous utilisez Node.js et vous souhaitez utiliser MongoDB ? Entrez-ici !

a marqué ce sujet comme résolu.

Bonjour à tous,

J'ai commencé (il y a 5 mois, 1 semaine) la rédaction d'un tutoriel dont l'intitulé est Débuter avec MongoDB pour Node.js.

J'aimerai obtenir un maximum de retour sur celui-ci, sur le fond ainsi que sur la forme, afin de proposer en validation un texte de qualité.

Si vous êtes intéressé, cliquez ci-dessous

Merci d'avance pour votre aide

+0 -0

Je me doute que c'est bien pensé (du moins j'espère que ça l'est), mais pour un n00b comme moi qui n'a jamais touché à autre chose que du SQL, la transition peut être compliquée, surtout sans ressources sur le sujet (j'arrive pas à trouver de bons tutos sur MongoDB, y compris en anglais).

Donc si tu peux faire un bon truc, je pense que ça servira à pas mal de gens. Surtout connaissant tes précédents tutos, je sens que la technique est au niveau ;)

Bah le problème survient surtout quand le modèle est fortement relationnel (des chiens qui ont des petits, un maître, un collier, une adresse, un carnet de vaccination bref, je vous refais pas le cours de relationnel). Et qu'il faut créer ou importer un objet de ce modèle et ses relations (d'un coup).

On peut évidemment se débrouiller, mais il manque cruellement de transactions ACID entre différents "documents". Du coup, pour en bénéficier il faut tout mettre dans UN document, et parfois, ça revient à écrire des DAO ultra complexes.

En gros : ça a son domaine d'application, et ça y convient parfaitement mais ça ne 'remplace pas' une BDD relationnelle, dans les cas où effectivement, le modèle est relationnel.

Pour ma part, je me sers souvent d'une base relationnelle pour les éléments fondateurs (Domain-Driven) de l'application par contre je touche à Mongo (voire Redis et encore d'autres) pour tout ce qui est plus volatile et plutôt "standalone".

Par exemple : le modèle pur et dur (utilisateurs, permissions, associations d'objets, modélisation du projet) part en SQL, par contre l'historique des modifs d'un objet va partir dans Mongo, hBase et compagnies.

+2 -0

Pour la forme :

  • "Celle collection" juste avant l'exemple avec 3 documents.
  • "les nombres" Formats spéciaux, Nombres.
  • "mongod.exe" 2 fois au début de la partie Installer MongoDB.
  • "Maintenant que nous" Non ? Première phrase de la partie Opérations depuis Node.js.
  • "Cet idnetifiant" L'ObjectID.
  • "il va s'agir" Juste avant Récupérer tous les documents d'une collection.
  • Ligne 15 au niveau de Récupérer tous les documents d'une collection il manque une parenthèse et le point virgule.

Sur le fond, c'est bien expliqué comme toujours, merci Thunderseb ;)

Non c'est clair, il y a juste un oubli du d quand tu dis :

  • Dedans, écrivez le chemin vers mongo.exe, suivi du paramètre dbpath, comme ceci
  • Lancez mongo.exe, et voici ce que vous devriez obtenir. Si la dernière ligne affiche waiting for connections, c'est bon, MongoDB fonctionne et attend le travail !

C'est bien le serveur que tu demandes de lancer non ?

Bonjour,

Merci pour ce tutoriel. Il m'a attiré dès que j'ai vu "Mongo DB". Alors j'en profite pour faire un premier retour.

Vous utilisez Node.js et vous souhaitez utiliser le gestionnaire de base de données NoSQL MongoDB ?

Introduction

Étant donné que le terme NoSQL n'est pas commun, tu devrais mettre un lien au moins vers la défnition de NoSQL.

Notez qu'une base de données MongoDB n'est pas faite pour remplacer une base de données SQL. Une base SQL est relationnelle, alors qu'une base NoSQL, ici MongoDB, ne l'est pas. Chaque type de base possède son propre domaine d'application !

Fonctionnement et structure de MongoDB

ça n'a pas vraiment de sens de parler d'une base SQL. Ce que tu appelles ici base SQL, on les appelle bases relationnelles. Il faudrait donc pour que le lecteur comprennent bien, donner la différence entre une base relationnelle et une base NoSQL (j'en parle d'ailleurs un peu dans mon article sur le bigdata).

Il est courant de voir cohabiter deux SGBD : un SQL et un non SQL.

Fonctionnement et structure de MongoDB

En lisant cela par exemple, on pourrait penser que NoSQL = non SQL, alors que NoSQL signifie Not Only SQL

Moi, je vais installer sur mon Windows 8.1 64 bits.

Installer MongoDB et faire quelques tests

Je trouve dommage que le tutoriel se limite a présenter l'installation de MongoDB sur Windows.

Lors de son lancement, mongod.exe recherchera le dossier /data/bd à la racine de votre disque

Installer MongoDB et faire quelques tests

Tu installes sur Windows, mais tu donne des chemins de fichiers commun aux Linuxiens (slash vs backslash). De plus tu mentionnes la "racine de votre disque". Mais de quel disque ? le C: ? le D:\ ? celui sur lequel j'ai posé mongodb ?

Quelques opérations

Installer MongoDB et faire quelques tests

J'aurai bien précisé ici dans le titre que les opérations seront faites dans le shell. Car "Quelques opérations" est très vague.

En terme d'opération, je pense qu'il faudra un peu plus quand même. Il faut au moins les classiques, c'est à dire sélectionner/créer/modifier/supprimer un document et/ou une base.

Une petite analogie avec ce qui se fait coté SQL ne serait pas de trop je pense.

Afin de pouvoir se connecter à une base de données MongoDB depuis Node.js, il convient d'installer le module mongodb :

Se connecter depuis Node.js

J'aurai aimé savoir si un version de npm minimale est requise pour ça.

Je me suis arrêté là. Je n'ai pas lu les deux derniers extraits. Mais en lisant le titre je m'attendais à un contenu un peu plus conséquent quand même. Il faudrait revoir un peu la formulation du titre.

Les commandes en shell et en "node.js" sont pour la plupart identiques (sauf qu'il n'y a pas de callback dans le shell).

Je vais modifier les autres points, et ajouter l'install pour Linux.

Par contre, pour la version de npm minimale, je ne trouve pas. La version de npm est-elle la même que Node lui-même ? Si oui, c'est à partir de la 0.6.19 inclue (cf. https://github.com/mongodb/node-mongodb-native/blob/master/package.json ).

Hello !

Est-ce que tu arrives à avancer sur le tuto ?

Tu penses l'envoyer à la validation bientôt ? Ce serait pas mal d'avoir quelques tutos sur le JS serveur, pour changer…

En tout cas ça m'a bien aidé sur un projet perso : tout tourne sur MongoDB alors que je ne touchais qu'à MySQL avant… ;)


Au passage, il manquerait peut-être un morceau sur les optimisations : quelle(s) structure(s) adopter pour mieux gérer l'absence de jointures, par exemple ?

Yop !

En mettant à jour mon tuto sur NW.js j'ai parcouru le wiki et suis tombé sur Mongo Management Studio. C'est assez limité en version gratuite, mais ça a l'air plutôt pratique pour ne pas tout gérer en ligne de commande.

Tu connais d'autres softs pour gérer une DB (voire l'instancier1) graphiquement ?


  1. Par exemple je dois faire un mongod --fork --logpath ./mongod.log --dbpath ~/data/db dans le dossier de mon projet quand je veux rendre ma DB accessible en local, donc retrouver cette commande dès que je veux parcourir ma DB ça devient vite décourageant… 

Ce sujet est verrouillé.