C’est un marriage NoSQL et SQL au sens où l’architecture de base est similaire.\n
Base de données -> Collections -> Documents -> Documents -> etc.\n
Tout simplement du JSON! J’adore.\n
Une collection c’est pas mal un Array d’objets JSON.\n
- Les requêtes sont faites dans notre langage préféré: le JavaScript. \n- MongoDB met à notre disposition beaucoup de méthodes sur leurs collections.\n- Dans le “shell” MongoDB on peut utiliser du JavaScript pour intéragir avec des objets.\n
\n
- Pas trop recherché ça, je n’y suis pas encore rendu...\n- mais plus important... (next slide)\n
- Les collections ne tiennent pas rigueur de schémas pour leurs documents.\n- C’est possible d’avoir des documents avec des propriétés complètements différentes dans une même collection\n
- Les collections ne tiennent pas rigueur de schémas pour leurs documents.\n- C’est possible d’avoir des documents avec des propriétés complètements différentes dans une même collection\n
- Les collections ne tiennent pas rigueur de schémas pour leurs documents.\n- C’est possible d’avoir des documents avec des propriétés complètements différentes dans une même collection\n
- C’est une des méthodes d’aggrégation implantées dans MongoDB\n- Pour ceux qui ne connaissent pas, c’est simplement une manière de faire des opérations en batch et d’aggréger les résultats.\n- Je ne suis pas expert là dedans, mais assez pour l’introduire.\n
- Si on veut savoir quels tags reviennent le plus dans les documents d’une collection par exemple\n- La fonction peur “émettre” autant de fois qu’elle veut à la fonction de réduction, étant donné qu’on pourrait avoir plusieurs tags dans notre document, on veut looper pour émettre chaque tag 1 fois.\n
- Notre fonction reduce prend deux paramètres: \n- une “clé” à laquelle on assignera la valeure finale (le “count”)\n- les valeurs qu’on doit “processer”\n- Dans ce cas si, pour chaque fois qu’on a une “clé” certaine clé, on additionne le nombre de fois qu’elle a été rencontré.\n- Désolé pour la clareté je suis encore en train d’apprendre ce bout.\n
- Ensuite on roule la fonction mapReduce sur une collection.\n- On peut retourner les valeurs dans une autre collection ou bien, comme dans cet exemple, les retourner directement dans la console.\n
- Implémentation native en JavaScript\n- Inspiré par le driver en Ruby qui est officiellement maintenu par 10gen (la compagnie qui a créé MongoDB)\n- 100% asynchrone, ça ne bloque pas, comme il se doit sur node.js\n- disponible sur github évidemment\n
- Implémentation native en JavaScript\n- Inspiré par le driver en Ruby qui est officiellement maintenu par 10gen (la compagnie qui a créé MongoDB)\n- 100% asynchrone, ça ne bloque pas, comme il se doit sur node.js\n- disponible sur github évidemment\n
- Implémentation native en JavaScript\n- Inspiré par le driver en Ruby qui est officiellement maintenu par 10gen (la compagnie qui a créé MongoDB)\n- 100% asynchrone, ça ne bloque pas, comme il se doit sur node.js\n- disponible sur github évidemment\n
- Implémentation native en JavaScript\n- Inspiré par le driver en Ruby qui est officiellement maintenu par 10gen (la compagnie qui a créé MongoDB)\n- 100% asynchrone, ça ne bloque pas, comme il se doit sur node.js\n- disponible sur github évidemment\n
- Petit exemple de insert dans une collection:\n- crée la connection\n- définir quelle collection utiliser (remarquez qu’on a pas besoin de la créer!\n- On insère dans la collection une entrée avec la clé “a” et la valeur 2\n- La fonction retourne une erreur s’il y en a une (comme il se doit sur node) et les documents insérés sous forme d’une Array (je pense)\n
- Petit exemple de insert dans une collection:\n- crée la connection\n- définir quelle collection utiliser (remarquez qu’on a pas besoin de la créer!\n- On insère dans la collection une entrée avec la clé “a” et la valeur 2\n- La fonction retourne une erreur s’il y en a une (comme il se doit sur node) et les documents insérés sous forme d’une Array (je pense)\n
- Petit exemple de insert dans une collection:\n- crée la connection\n- définir quelle collection utiliser (remarquez qu’on a pas besoin de la créer!\n- On insère dans la collection une entrée avec la clé “a” et la valeur 2\n- La fonction retourne une erreur s’il y en a une (comme il se doit sur node) et les documents insérés sous forme d’une Array (je pense)\n
- Petit exemple de insert dans une collection:\n- crée la connection\n- définir quelle collection utiliser (remarquez qu’on a pas besoin de la créer!\n- On insère dans la collection une entrée avec la clé “a” et la valeur 2\n- La fonction retourne une erreur s’il y en a une (comme il se doit sur node) et les documents insérés sous forme d’une Array (je pense)\n
- Petit exemple de insert dans une collection:\n- crée la connection\n- définir quelle collection utiliser (remarquez qu’on a pas besoin de la créer!\n- On insère dans la collection une entrée avec la clé “a” et la valeur 2\n- La fonction retourne une erreur s’il y en a une (comme il se doit sur node) et les documents insérés sous forme d’une Array (je pense)\n
- Petit exemple de insert dans une collection:\n- crée la connection\n- définir quelle collection utiliser (remarquez qu’on a pas besoin de la créer!\n- On insère dans la collection une entrée avec la clé “a” et la valeur 2\n- La fonction retourne une erreur s’il y en a une (comme il se doit sur node) et les documents insérés sous forme d’une Array (je pense)\n
- Petit exemple de insert dans une collection:\n- crée la connection\n- définir quelle collection utiliser (remarquez qu’on a pas besoin de la créer!\n- On insère dans la collection une entrée avec la clé “a” et la valeur 2\n- La fonction retourne une erreur s’il y en a une (comme il se doit sur node) et les documents insérés sous forme d’une Array (je pense)\n
Quelques avantages:\n- Bare-metal, on ne peut pas être plus proche de MongoDB que ça sauf directement dans le shell.\n- API très simple et très proche de celle offerte dans le shell MongoDB\n- Parfait pour travailler avec des données brutes\n
Étant donnée que ce sont des données brutes, c’est difficile d’organiser son code et son architecture avec cette librairie.\n
C’est là que Mongoose entre en jeu.\n
- Permet d’organiser son code plus habituellement avec des modèles\n- Ces modèles ont des middleware un peu comme les méthodes de before et after dans ActiveRecord sous Rails\n- Validation des entrées dans la base données au moment de la sauvegarde\n- et plus...\n
Facile de définir un modèle\n- On spécifie son schéma à l’aide d’une structure JSON\n- Puis on l’ajoute aux modèles “trackés” par mongoose (qui va gérer la connection, les collections, etc.)\n\n
Facile de définir un modèle\n- On spécifie son schéma à l’aide d’une structure JSON\n- Puis on l’ajoute aux modèles “trackés” par mongoose (qui va gérer la connection, les collections, etc.)\n\n
Facile de définir un modèle\n- On spécifie son schéma à l’aide d’une structure JSON\n- Puis on l’ajoute aux modèles “trackés” par mongoose (qui va gérer la connection, les collections, etc.)\n\n
Mongoose supporte l’embeddation de documents dans d’autres. On peut les définir comme un Array de modèles dans un autre modèle.\n
Mongoose supporte l’embeddation de documents dans d’autres. On peut les définir comme un Array de modèles dans un autre modèle.\n
Mongoose supporte l’embeddation de documents dans d’autres. On peut les définir comme un Array de modèles dans un autre modèle.\n
- Comme l’instatiation d’un objet JavaScript\n- On peut aussi “pousser” des éléments embeddés dans l’Array de commentaires qu’on a créé auparavant\n- Ensuite on sauvegarde l’instance dans la base de données, ce qui nous retourn une erreur s’il y en a une.\n
- Comme l’instatiation d’un objet JavaScript\n- On peut aussi “pousser” des éléments embeddés dans l’Array de commentaires qu’on a créé auparavant\n- Ensuite on sauvegarde l’instance dans la base de données, ce qui nous retourn une erreur s’il y en a une.\n
- Comme l’instatiation d’un objet JavaScript\n- On peut aussi “pousser” des éléments embeddés dans l’Array de commentaires qu’on a créé auparavant\n- Ensuite on sauvegarde l’instance dans la base de données, ce qui nous retourn une erreur s’il y en a une.\n
- Comme l’instatiation d’un objet JavaScript\n- On peut aussi “pousser” des éléments embeddés dans l’Array de commentaires qu’on a créé auparavant\n- Ensuite on sauvegarde l’instance dans la base de données, ce qui nous retourn une erreur s’il y en a une.\n
- Comme l’instatiation d’un objet JavaScript\n- On peut aussi “pousser” des éléments embeddés dans l’Array de commentaires qu’on a créé auparavant\n- Ensuite on sauvegarde l’instance dans la base de données, ce qui nous retourn une erreur s’il y en a une.\n
- Trouver des documents avec Mongoose c’est assez simple. Accepte tous les mêmes paramètres que le shell MongoDB.\n- Retourne un Array d’instance de modèle Mongoose et non pas des objets brutes.\n
- Trouver des documents avec Mongoose c’est assez simple. Accepte tous les mêmes paramètres que le shell MongoDB.\n- Retourne un Array d’instance de modèle Mongoose et non pas des objets brutes.\n
- Trouver des documents avec Mongoose c’est assez simple. Accepte tous les mêmes paramètres que le shell MongoDB.\n- Retourne un Array d’instance de modèle Mongoose et non pas des objets brutes.\n
Les middlewares et les méthodes d’instance:\n- On a accès à pre et post pour plusieurs méthodes d’un modèle, ici en exemple on a avant la sauvegarde.\n- C’est possible de les rouler en parallèle ou bien en séries (ici en séries)\n\nLes méthodes sont créés en utilisant la fonction “method” sur le schéma.\n
Les middlewares et les méthodes d’instance:\n- On a accès à pre et post pour plusieurs méthodes d’un modèle, ici en exemple on a avant la sauvegarde.\n- C’est possible de les rouler en parallèle ou bien en séries (ici en séries)\n\nLes méthodes sont créés en utilisant la fonction “method” sur le schéma.\n
Les middlewares et les méthodes d’instance:\n- On a accès à pre et post pour plusieurs méthodes d’un modèle, ici en exemple on a avant la sauvegarde.\n- C’est possible de les rouler en parallèle ou bien en séries (ici en séries)\n\nLes méthodes sont créés en utilisant la fonction “method” sur le schéma.\n
On peut valider chaque clés de nos modèles avec une fonction ou un regexp + quelques fonctions built in comme min, max et required.\n
On peut valider chaque clés de nos modèles avec une fonction ou un regexp + quelques fonctions built in comme min, max et required.\n
On peut valider chaque clés de nos modèles avec une fonction ou un regexp + quelques fonctions built in comme min, max et required.\n
Petit projet devenu gros en Node.js qui utilise ces technologies\n
Roule sur DotCloud sous node.js, utilise MongoDB pour stocker ses données et Redis pour gérer ses queues de background jobs (avec la librairie Kue par le fameux TJ Holowaychuk)\n
\n
- Exemple du modèle Twitter dans Readab.ly. Fait usage de relations avec l’ID du user.\n- Ça me fera plaisir de montrer du code de Readab.ly plus tard pour les intéréssés.\n