MongoDB non fornisce alcun comando per creare un database. E infatti, in realtà non c’è bisogno di crearlo manualmente, perchè lo stesso MongoDB si occuperà di crearlo al volo, quando si salva per la prima volta un dato in una collection definita.

Per chi viene dal più classico SQL, quel che si fa solitamente è creare un database, poi una tabella, e poi iniziare a popolarla. In MongoDB, non si ha bisogno di menzionare ciò che si andrà a creare, la prima volta che si salverà il valore nella collection (table), sotto un db selezionato, MongoDB creerà la tupla, la collezione e il database automaticamente.

Nota bene, MongoDB fornisce il metodo db.createCollection() per creare una collezione manualmente, ma non un database.

In questa guida, mostriamo come e quando MongoDB creerà il database e le collezioni.

1. Mostriamo tutti i database

Il comando per vedere tutti i DB presenti sul nostro server MongoDB è il seguente:

show dbs

Che darà risultati simili a questo:

MongoDB shell version: 1.8.1
connecting to: test
> show dbs
admin   0.03126GB
local   (empty)

in cui si vede come gli unici due database disponibili siano ‘admin’ e ‘local’.

2. Definiamo un nome per il database

Usiamo il comando use mio_database per passare dal database di default al database che si vuol definire. Tuttavia, MongoDB ancora non andrà a creare alcun database, finchè non ci si mette qualcosa dentro, infatti:

> use mio_database
switched to db mio_database
> show dbs
admin   0.03126GB
local   (empty)

NB. Il database mio_database non appare ancora.

3. Salviamolo

Definiamo una collezione chiamata utenti, e salviamoci un qualunque documento all’interno.

> db.utenti.save( {username:"megatron"} )
> db.utenti.find()
{ "_id" : ObjectId("4dbac7bfea37068bd0987573"), "username" : "megatron" }
>
> show dbs
admin   0.03126GB
local   (empty)
mio_database        0.03126GB

Questo si traduce in: Salva il documento(valore) {username: "megatron"} nella collezione ‘utenti’. Quando questa operazione di salvataggio verrà completata, MongoDB creerà la collezione utenti, e il database mio_database automaticamente.