Quando crei un database in MongoDB, il tuo database è fondamentalmente un contenitore vuoto a cui puoi aggiungere una o più raccolte.
Una raccolta è analoga a una tabella nei database relazionali.
Nei database relazionali, puoi usare CREATE TABLE
per creare ogni tabella che desideri nel database.
Ma MongoDB non è un database relazionale e memorizza i suoi dati come documenti. Ogni documento è archiviato in una raccolta.
Questo articolo mostra come creare una raccolta in MongoDB.
Due opzioni
Hai due opzioni per creare raccolte in MongoDB:
- Implicito
- Esplicito
Ecco un esempio di ciascuno.
Crea una raccolta – implicitamente
Puoi creare una raccolta in modo implicito semplicemente aggiungendo un documento a una raccolta inesistente. Quando lo fai, la raccolta viene creata se non esiste già.
Ecco un esempio di creazione implicita di una raccolta:
db.pets.insert({ name: "Fetch" })
Questo crea una collezione chiamata pets
e vi inserisce un documento.
In realtà, crea la raccolta solo se non esiste già. Se esiste già, inserisce semplicemente il documento nella raccolta esistente con quel nome.
Fondamentalmente, la sintassi è questa:
db.<collection>.insert()
Dove <collection>
è il nome della collezione.
Crea una raccolta – in modo esplicito
Puoi anche creare raccolte in modo esplicito con db.createCollection()
metodo. Questo metodo consente di specificare varie opzioni, come l'impostazione della dimensione massima o le regole di convalida della documentazione.
Questo è un po' analogo a CREATE TABLE
istruzione in SQL. Detto questo, MongoDB non richiede che tu specifichi colonne, tipi di dati, ecc. Come dovresti specificare con CREATE TABLE
istruzione quando si utilizza un database relazionale.
Ecco un esempio di utilizzo di db.createCollection()
metodo per creare una raccolta:
db.createCollection("employees")
Risultato:
{ "ok" : 1 }
In questo esempio, non ho specificato alcuna opzione. Pertanto, non c'era alcun reale vantaggio nel crearlo in questo modo creandolo implicitamente (come nell'esempio precedente).
Tuttavia, se desideri specificare le opzioni per la tua raccolta, crearla in modo esplicito è la strada da percorrere.
Ecco un esempio di specifica di alcune opzioni durante la creazione di una raccolta:
db.createCollection(
"products",
{
capped : true,
size : 7500500,
max : 7000
}
)
Risultato:
{ "ok" : 1 }
Ecco una spiegazione delle opzioni che ho fornito in questo esempio:
- Il
capped
argomento consente di specificare se la dimensione della raccolta deve essere limitata (cioè non può crescere oltre una determinata dimensione). Se specifichitrue
, devi anche impostare una dimensione massima insize
campo. - Il
size
argomento imposta una dimensione massima in byte per una raccolta limitata. Una volta che una raccolta limitata raggiunge la sua dimensione massima, MongoDB rimuove i documenti più vecchi per fare spazio ai nuovi documenti. Lasize
il campo è obbligatorio per le raccolte limitate e ignorato per le altre raccolte. - Il
max
argomento consente di specificare il numero massimo di documenti consentiti nella raccolta limitata. Se una raccolta limitata raggiunge lasize
limite prima di raggiungere il numero massimo di documenti, MongoDB rimuove i vecchi documenti. Pertanto, assicurati che lasize
argomento è sufficiente per contenere il numero di documenti specificato con ilmax
argomento.
Queste sono tre delle varie opzioni che puoi specificare con db.createCollection()
metodo.
Sintassi e altri dettagli
La sintassi completa (al momento della stesura di questo articolo) è simile alla seguente:
db.createCollection( <name>,
{
capped: <boolean>,
autoIndexId: <boolean>,
size: <number>,
max: <number>,
storageEngine: <document>,
validator: <document>,
validationLevel: <string>,
validationAction: <string>,
indexOptionDefaults: <document>,
viewOn: <string>,
pipeline: <pipeline>,
collation: <document>,
writeConcern: <document>
}
)
Vedi db.createCollection()
dalla documentazione ufficiale di MongoDB per una spiegazione dettagliata di ciascuna opzione.