MongoDB

From air
Jump to navigation Jump to search

SBGD NoSQL

Liens

Documentation

Premiers pas avec MongoDB

Lancez le serveur

./bin/mongod --rest --dbpath ./data/db

""Remarque"" : en production, ajoutez les options ./bin/mongod --nohttpinterface --bing_ip <address> --auth --logappend ... --dbpath ./data/db

Ouvrez les pages d'administration via le serveur HTTP et l'interface REST

Lancez le shell

./bin/mongo

Quelques commandes d'administration


// Quelques commandes d'administration
help

db.help()

db.version()

db.stats()

db.serverStatus()

db.currentOp()

db.killOp(1234)

prompt=function() { return (new Date())+"$ "; }

db.getLastError()

// db.serverCmdLinesOpts() n'existe plus

db.collection.totalIndexSize()

db.collection.getIndexStats()

db.shutdownServer()

Relancez le serveur mongod


//	show dbs                     show database names
show dbs

//	show collections             show collections in current database
show collections

//	show users                   show users in current database
show users

//	show profile                 show most recent system.profile entries with time >= 1ms
show profile

//	show logs                    show the accessible logger names
show logs

//	show log [name]              prints out the last segment of log in memor
show log global

Création et requêtes

// utiliser une base de données : elle devient la base courante pour les opération suivantes
use university

//lister les index de la collection persons
db.persons.getIndexes()


// création d'un index sur lastname pour les requêtes de type
// *  db.persons.find( { lastname: "Donsez" } )
// *  db.persons.find().sort( { lastname: 1 } )

db.persons.ensureIndex( { "lastname": 1 }, { unique: true } )

db.persons.getIndexes()

db.persons.find()

// ajout d'un objet
db.persons.save(
{
    pseudo: "dd",
    firstname : "Didier",
    lastname : "Donsez",
    job : "Professor",
    skill : ["SE","OSGi","IoT"],
    hobbies: ["Laser cutter", "DIY"],
}
)

db.persons.findAll();

// ajout d'un objet
db.persons.save(
{
    pseudo: "or",
    firstname : "Olivier",
    lastname : "Richard",
    job : "Professor",
    skill : ["Network","Grid"],
    hobbies: ["3D printing", "DIY"],
}
)

db.persons.find();

// ajout d'un objet
db.persons.save(
{
    pseudo: "np",
    firstname : "Nicolas",
    lastname : "Palix",
    job : "Professor",
    skill : ["OS","Phycomp"],
    address: "Saint Martin d'Hères",
}
)

db.persons.find()


// rechercher 2 objets	
db.persons.find().limit(2)

// rechercher un objet	
db.persons.findOne()

// sortie triée sur le nom
db.persons.find().sort( { lastname: 1 } )

// rechercher les objets dont le champ firstname = "Didier"
db.persons.find( { firstname : "Didier" } )

// rechercher les objets dont le champ hobbies n'est pas null
db.persons.find( { hobbies : { $ne : null } } )


var p = db.persons.find()
while ( p.hasNext() ) printjson( p.next().lastname )


// script de modification des champs "address"	
db.persons.find( { address: {$ne : null}}).forEach( 
    function update(e) {
        var address = e.address;
        e.address = new Object();
        e.address.way = address;
        e.address.city = "";
        db.persons.save(e);
    }
)

exit
./bin/mongostat

Utilisation de l'interface RESTFul

http://127.0.0.1:28017/university/persons

curl -GET http://127.0.0.1:28017/university/persons

Utilisation avec Node.js et Mongoose

Voir Mongoose

Utilisation avec Node-RED

Node RED with MQTT, OpenHAB, MongoDB, Redis.io, RabbitMQ, Moquette, Mosquitto ...

Il existe dans Node-RED un noeud pour sauvegarder les messages (json) transformés par un flow dans une base MongoDB. Le serveur mongod doit être préalablement démarré.

Replication

http://docs.mongodb.org/manual/replication/

Sharding

http://docs.mongodb.org/manual/core/sharding-introduction/