MongoDB est une base de données documents avec un focus particulier sur la performance, l'évolutivité, la flexibilité et la vitesse.
MongoDB n'est pas un RDBMS et ne tente en aucuns cas de l'être. Il y à donc des différences fondamentales importantes entre les deux :
En revanche, MongoDB organise les informations dans des documents sans format prédéfini.
MongoDB peux être utilisé dans tous les cas où un RDBMS serait utilisé car l'application qui utilise la base de données peut assumer les fonctions qui ne ont pas présentes.
Par contre MongoDB pourrait être un meilleur choix dans certain cas, principalement où :
Cette liste n'est pas absolue, et même dans ces cas un RDBMS standard pourrait répondre au exigences. Tout dépends du volume planifié et de la structure des données.
mongoIl est possible d'utiliser MongoDB en ligne de commande avec l'outil mongo :
$ mongo MongoDB shell version: 2.4.6 connecting to: test >
Par défaut l'outil se connecte au serveur local et à la base de données test. Pour changer de base de données il suffit d'utiliser use.
> use demo switching to db demo
Si la base de données en question n'existe pas, elle sera créée. Par la suite, la variable globale db référera à la base de données en cours.
Il existe un driver pour presque tous les langages de programmation (même pour LISP, Erlang et MatLab). Les drivers sont disponible sur le site de MongoDB.
Il existe aussi plusieurs ODM pour différents langages avec différents niveaux de fonctionnalités. Quelques exemples notables sont :
Mongo stock les documents au format BSON à l'interne mais le format JSON peut être utilisé pour communiquer.
Plusieurs drivers vont convertir les documents au format BSON avant de l'envoyer au serveur pour sauver du travail au serveur et aussi du temps de transfert.
Un document est composé de plusieurs paires clé-valeur ne suivant pas de modèle prédéterminé.
Un exemple de document simple :
{
make: "Mazda",
model: "3",
year: 2008
}
Considérant la nature du format BSON, il est possible de stocker un document avec une structure beaucoup plus complexe que l'exemple précédant.
Un exemple de document plus complexe :
{
name: {
first: "William",
last: "Turner"
},
picture: BinData(...),
age: 19,
birthday: new Date('Aug 29, 1994'),
cars: [
{
make: "Mazda",
model: "3",
year: 2008
}
],
devices: [ "Desktop", "Laptop", "Phone", "Tablet" ]
}
Une collection est similaire à une table dans la philosophie des RDBMS dans le sens ou c'est l'entité qui contient et applique certaines restriction aux donnés.
Dans MongoDB, une collection :
Un point très important à retenir de MongoDB est qu'il est possible de sauvegarder des données hétérogènes dans une même collection. Il n'y a pas de concept de colonnes ou de structure de table comme dans un RDBMS.
Comme une base de données, la création d'une collection est implicite, elle se fait à la première utilisation.
Pour accéder à une collection, il suffit d'y référer par son nom comme si elle était un membre de db, par exemple :
> db.people demo.people
Il est aussi possible de lister les collections de la base de données courante.
> show collections people system.indexes
On peux créer ou, dans le langage SQL, insérer un document dans une collection avec la méthode insert() de la collection.
> db.people.insert({
name: {
first: "William", last: "Turner"
},
...
})
La recherche ou, en SQL, le SELECT se fait par la méthode find() de la collection. Tous les documents sont retournés si aucun paramètre n'est spécifié.
> db.people.find({ "name.first": "William" })
{
"_id" : ObjectId("528b0a15d45d79118196c284"),
"name" : {
"first" : "William",
"last" : "Turner"
},
"age" : 19,
"birthday" : ISODate("1994-08-29T04:00:00Z"),
...
}
Il existe deux méthodes pour modifier un document, la première est par update() qui supporte plusieurs opérateurs spéciaux.
> db.people.update(
{ "name.first": "William" },
{ $inc: { age: 1 }, $set: { birthday: new Date('Aug 29, 1993') } }
)
La deuxième méthode est d'utiliser save() qui est disponible autant sur le document que sur la collection. Par contre, cette méthode va insérer ou remplacer le document.
> var doc = db.people.find({ "name.first": "William" })
> doc.age++
> doc.birthday = new Date('Aug 29, 1993')
> doc.save()
> db.people.save(doc)
Pour supprimer un document il suffit d'utiliser la méthode remove() de la collection avec une requête pour identifier le document.
> db.people.remove({ "name.first": "William" })
En plus des indexes de bases supportés par un RDBMS, pour accommoder les documents MongoDB supporte d'autres types d'indexes :
Les indexes supportent aussi des modificateurs spéciaux :
Tous les indexes peuvent être ajouté sur une collection en utilisant la méthode ensureIndex.
Informations de contact: