Node.js + MongoDB Hello World Example

Voici un simple exemple utilisant node.js et MongoDB.
Nous allons voir comment crée une base de donnée, ce connecter à celle-ci, ajouter des document, les rechercher et finalement les supprimer. Le tous en Node.js.

En premier installer
Node.js
MongoDB

1 – Installer le driver pour Node.js

Installer le driver node.js pour MongoDB depuis votre ligne de commande:

npm install mongodb

2 – Connexion à la base de donnée MongoDB

var MongoClient = require('mongodb').MongoClient;

var myCollection;
var db = MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
	if(err)
		throw err;
	console.log("connecter avec MongoDB !");
	myCollection = db.collection('test_collection');
});

3 – Ajouter un document

En RDBMS un document est similaire à une entrée. Une collection est similaire à une table.
Voici comment ajouter un document dans votre collection:

	myCollection.insert({name: "doduck", description: "apprendre toujours plus"}, function(err, result) {
		if(err)
			throw err;

		console.log("document enregistrer");
	});

Le contenu de notre collection (table en RDBMS) est compossée d’un seule document (entrée/row):

{
“name”: “doduck”,
“description”: “apprendre toujours plus”"
}

4 – Update d’un document

Puisque Node.js est asynchrone faitent attention a bien exécuter l’update après avoir inserter le document et non pas en même temps (voir le code source plus bas).

	myCollection.update({name: "doduck"}, {name: "doduck", description: "prototype vos idées"}, {w:1}, function(err) {
	if(err)
		throw err;
    	console.log('entrer mise à jour');
    });

Le contenu de notre collection:

{
“name”: “doduck”,
“description”: “prototype vos idées”
}

5 – Update d’un document en ajoutant un champ

MongoDB étant une base de donnée non structurée vous pouvez ajouter dynamiquement des champs à votre document.
Pour cela il faut utiliser l’opérateur $set sinon vous aller remplacer votre document.

	myCollection.update({name: "doduck"}, {$set: {industry: "France"}}, {w:1}, function(err) {
	if(err)
		throw err;
    	console.log('entrer mise à jour');
    });

Contenu de notre collection:

{
“name”: “doduck”,
“description”: “prototype vos idées”,
“industry”: “France”
}

6 – Update d’un document en ajoutant des champs imbriqués

MongoDB n’a pas de schema de base. Ajouter des champs imbriquer est aussi possible.

	myCollection.update({name: "doduck"}, {$set: {company: {employed: 10, officialName: "doduck LTD", industries: ["it consultant", "développeurs passionnés"]}}}, {w:1}, function(err) {
		if(err)
			throw err;
    	console.log('entrer mise à jour');
    });

Contenu de notre collection:

{
“name” : “doduck”,
“description” : “prototype vos idées”,
“industry” : “France”,
“company” : {
“employed” : 10,
“officialName” : “doduck LTD”,
“industries” : ["développeurs passionnés", "développeurs passionnés"]
}
}

7 – Rechercher un document

Recherchons notre document (voir plus haut) depuis le champs “name” == “doduck” et “company.officialName” == “doduck LTD”. Avec cette exemple vous devriez retrouver ce document.

	var cursor = myCollection.find({"name" : "doduck", "company.officialName" : "doduck LTD" });
	cursor.each(function(err, doc) {
		if(err)
			throw err;
		if(doc==null)
			return;

		console.log("document trouver:");
		console.log(doc.name);
		console.log(doc.company.employed);
	});

8 – Supprimer un document

Maintenant supprimons notre document correspondant avec le “name” == “doduck”

	myCollection.findAndModify({name: "doduck"}, [], {remove:true}, function(err, object) {
		if(err)
			throw err;
		console.log("document supprimer");
    });

9 – Le code source en entier

var MongoClient = require('mongodb').MongoClient;

var myCollection;
var db;

function removeDocument(onRemove){
	myCollection.findAndModify({name: "doduck"}, [], {remove:true}, function(err, object) {
		if(err)
			throw err;
		console.log("document supprimer");
		onRemove();
    });
}

function findDocument(onFinded){
	var cursor = myCollection.find({"name" : "doduck", "company.officialName" : "doduck LTD" });
	cursor.each(function(err, doc) {
		if(err)
			throw err;
		if(doc==null)
			return;

		console.log("document trouver:");
		console.log(doc.name);
		console.log(doc.company.employed);
		onFinded();
	});
}

function fieldComplexeUpdateDocument(onUpdate){
	myCollection.update({name: "doduck"}, {$set: {company: {employed: 10, officialName: "doduck LTD", industries: ["it consulant", "développeurs passionnés"]}}}, {w:1}, function(err) {
		if(err)
			throw err;
    	console.log('entrer mise à jour');
    	onUpdate();
    });
}

function fieldUpdateDocument(onUpdate){
	myCollection.update({name: "doduck"}, {$set: {industry: "France"}}, {w:1}, function(err) {
		if(err)
			throw err;
    	console.log('entrer mise à jour');
    	onUpdate();
    });
}

function simpleUpdateDocument(onUpdate){
	myCollection.update({name: "doduck"}, {name: "doduck", description: "prototyper vos idées"}, {w:1}, function(err) {
	if(err)
		throw err;
    	console.log('entrer mise à jour');
    	onUpdate();
    });
}

function addDocument(onAdded){
	myCollection.insert({name: "doduck", description: "Apprend toujours plus"}, function(err, result) {
		if(err)
			throw err;

		console.log("document enregistrer");
		onAdded();
	});
}

function createConnection(onCreate){

	MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
		if(err)
			throw err;
		console.log("connecter avec MongoDB !");
		myCollection = db.collection('test_collection');

		onCreate();
	});
}

createConnection(function(){
	addDocument(function(){
		simpleUpdateDocument(function(){
			fieldUpdateDocument(function(){
				fieldComplexeUpdateDocument(function(){
					findDocument(function(){
						removeDocument(function(){
							console.log("The end");
						});
					});
				});
			});
		});
	});
});

Laisser un commentaire