Administration MongoDB

From Tuxunix
Jump to: navigation, search

Connexion à la Database

#> mongo

Connexion a mongod

MongoDB shell version: 2.0.6
connecting to: test
> show dbs
local   (empty)

Select a Database

> use test
switched to db test

Affiche la database sur laquelle votre session est en cours

> db
test

Afficher l'aide Mongo

> help
       db.help()                    help on db methods
       db.mycoll.help()             help on collection methods
       rs.help()                    help on replica set methods
       help admin                   administrative help
       help connect                 connecting to a db help
       help keys                    key shortcuts
       help misc                    misc things to know
       help mr                      mapreduce
       show dbs                     show database names
       show collections             show collections in current database
       show users                   show users in current database
       show profile                 show most recent system.profile entries with time >= 1ms
       show logs                    show the accessible logger names
       show log [name]              prints out the last segment of log in memory, 'global' is default
       use <db_name>                set current database
       db.foo.find()                list objects in collection foo
       db.foo.find( { a : 1 } )     list objects in foo where a == 1
       it                           result of the last line evaluated; use to further iterate
       DBQuery.shellBatchSize = x   set default number of items to display on shell
       exit                         quit the mongo shell
> help admin
       ls([path])                      list files
       pwd()                           returns current directory
       listFiles([path])               returns file list
       hostname()                      returns name of this host
       cat(fname)                      returns contents of text file as a string
       removeFile(f)                   delete a file or directory
       load(jsfilename)                load and execute a .js file
       run(program[, args...])         spawn a program and wait for its completion
       runProgram(program[, args...])  same as run(), above
       sleep(m)                        sleep m milliseconds
       getMemInfo()                    diagnostic

Creer base

> use testPierrot
switched to db testPierrot
> show dbs
local   (empty)
test    (empty)
  • On remarque que la base n'est pas créer, il faut impérativement creer un user :
> db.users.save({username:"pierrot"})
> db.users.find()
{ "_id" : ObjectId("52ea7899106346ef957fe5d4"), "username" : "pierrot" }
  • Maintenant la base est créé !!
> show dbs
local   (empty)
test    (empty)
testPierrot     0.203125GB

Creer collections

> db.createCollection("PierrotCollection")
{ "ok" : 1 }
> show collections
PierrotCollection
system.indexes
test
users
  • Sous mongodb vous n'avez pas besoin de creer de collection. MongoDB créé des collections automatique, quand vous inserrez des documents.

Documents

Ajout

>db.PierrotCollection.insert({
  _id: ObjectId(),
  title: 'MongoDB test', 
  description: 'MongoDB is no sql database',
  by: 'tuto',
  url: 'http://wiki.tuxunix.com',
  tags: ['mongodb', 'database', 'NoSQL'],
  likes: 100
})

Affichage (select)

  • Affiche tous les documents
>db.PierrotCollection.find()
{ "_id" : ObjectId("52ea8809be5d50f31ed6d3b2"), "title" : "MongoDB test", "description" : "MongoDB is no sql database", "by" : "tuto", "url" : "http://wiki.tuxunix.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }
  • Affiche en mode sympa
> db.PierrotCollection.find().pretty()
{
       "_id" : ObjectId("52ea8a6dbe5d50f31ed6d3b4"),
       "title" : "MongoDB test",
       "description" : "MongoDB is no sql database",
       "by" : "tuto",
       "url" : "http://wiki.tuxunix.com",
       "tags" : [
               "mongodb",
               "database",
               "NoSQL"
       ],
       "likes" : 100
}
  • Affiche en selection un Field (champ) en particulier :
> db.PierrotCollection.find({title:"MongoDB test"}).pretty()
{
       "_id" : ObjectId("52ea8a6dbe5d50f31ed6d3b4"),
       "title" : "MongoDB test",
       "description" : "MongoDB is no sql database",
       "by" : "tuto",
       "url" : "http://wiki.tuxunix.com",
       "tags" : [
               "mongodb",
               "database",
               "NoSQL"
       ],
       "likes" : 100
}
  • Equivalent du "AND" par la "," :
> db.PierrotCollection.find({title:"MongoDB test", "by":"tuto"}).pretty()
{
       "_id" : ObjectId("52ea8a6dbe5d50f31ed6d3b4"),
       "title" : "MongoDB test",
       "description" : "MongoDB is no sql database",
       "by" : "tuto",
       "url" : "http://wiki.tuxunix.com",
       "tags" : [
               "mongodb",
               "database",
               "NoSQL"
       ],
       "likes" : 100
}

Projection

> db.PierrotCollection.find({},{KEY:1}).pretty()
{ "_id" : ObjectId("52ea8a6dbe5d50f31ed6d3b4") }

> db.PierrotCollection.find({},{KEY:2}).pretty()
{ "_id" : ObjectId("52ea8a6dbe5d50f31ed6d3b4") }

Suppression

> db.PierrotCollection.remove(ObjectId("52ea8809be5d50f31ed6d3b2"))
> db.PierrotCollection.find()

Indexes

Creation d'indexes

> db.COLLECTION_NAME.ensureIndex({KEY:1})

Déterminer un index (EXPLAIN)

> db.collection.find().explain()
{
       "cursor" : "BasicCursor",
       "nscanned" : 0,
       "nscannedObjects" : 0,
       "n" : 0,
       "millis" : 0,
       "nYields" : 0,
       "nChunkSkips" : 0,
       "isMultiKey" : false,
       "indexOnly" : false,
       "indexBounds" : {

       }
}

Sauvegardes

#> mongodump --dbpath /data/db/ --out /data/backup/
#> mongodump --collection collection --db test

Commande de diagnostic

serverStatus

> db.serverStatus()
{
       "host" : "RONY-DEBIAN-TEST",
       "version" : "2.0.6",
       "process" : "mongod",
       "uptime" : 65650,
       "uptimeEstimate" : 64861,
       "localTime" : ISODate("2014-01-31T09:42:37.788Z"),
       "globalLock" : {
               "totalTime" : 65650545869,
               "lockTime" : 333903,
               "ratio" : 0.000005086065859471673,
               "currentQueue" : {
                       "total" : 0,
                       "readers" : 0,
                       "writers" : 0
               },
               "activeClients" : {
                       "total" : 0,
                       "readers" : 0,
                       "writers" : 0
               }
       },
       "mem" : {
               "bits" : 64,
               "resident" : 18,
               "virtual" : 298,
               "supported" : true,
               "mapped" : 80,
               "mappedWithJournal" : 160
       },
       "connections" : {
               "current" : 1,
               "available" : 818
       },
       "extra_info" : {
               "note" : "fields vary by platform",
               "heap_usage_bytes" : 681840,
               "page_faults" : 39
       },
       "indexCounters" : {
               "btree" : {
                       "accesses" : 1,
                       "hits" : 1,
                       "misses" : 0,
                       "resets" : 0,
                       "missRatio" : 0
               }
       },
       "backgroundFlushing" : {
               "flushes" : 1094,
               "total_ms" : 46,
               "average_ms" : 0.04204753199268738,
               "last_ms" : 0,
               "last_finished" : ISODate("2014-01-31T09:42:27.379Z")
       },
       "cursors" : {
               "totalOpen" : 0,
               "clientCursors_size" : 0,
               "timedOut" : 0
       },
       "network" : {
               "bytesIn" : 16044,
               "bytesOut" : 35093,
               "numRequests" : 203
       },
       "opcounters" : {
               "insert" : 5,
               "query" : 24,
               "update" : 0,
               "delete" : 2,
               "getmore" : 0,
               "command" : 174
       },
       "asserts" : {
               "regular" : 0,
               "warning" : 0,
               "msg" : 0,
               "user" : 0,
               "rollovers" : 0
       },
       "writeBacksQueued" : false,
       "dur" : {
               "commits" : 30,
               "journaledMB" : 0,
               "writeToDataFilesMB" : 0,
               "compression" : 0,
               "commitsInWriteLock" : 0,
               "earlyCommits" : 0,
               "timeMs" : {
                       "dt" : 3069,
                       "prepLogBuffer" : 0,
                       "writeToJournal" : 0,
                       "writeToDataFiles" : 0,
                       "remapPrivateView" : 0
               }
       },
       "ok" : 1
}
  • Une jonction particuliere :
> db.serverStatus().mem
{
       "bits" : 64,
       "resident" : 18,
       "virtual" : 298,
       "supported" : true,
       "mapped" : 80,
       "mappedWithJournal" : 160
}