Vai al contenuto principale

Creare collezioni in MongoDB: metodi manuali e automatici

Scopri come vengono create le collezioni in MongoDB, quando definirle esplicitamente e le principali opzioni di configurazione.
Aggiornato 29 set 2026  · 5 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Quando lavori con MongoDB, soprattutto se arrivi da un database relazionale, una delle prime cose che noterai è la flessibilità del design dello schema.

Le collezioni in MongoDB non devono essere create in anticipo in modo esplicito, ma ci sono momenti in cui ha senso definirle e configurarle con attenzione.

In questo articolo vedremo come e quando potresti voler creare una collezione in MongoDB, alcune opzioni di configurazione chiave da considerare e alcuni esempi di codice in JS e C# (il mio preferito). 

Non preoccuparti, abbiamo molta parità di funzionalità tra i driver, quindi gran parte di ciò che vedi qui oggi sarà possibile in <inserisci il linguaggio che preferisci>.

Se sei nuovo ai database NoSQL, valuta di iniziare con una Introduzione a NoSQL.

Che cos’è una collezione MongoDB?

Prima di vedere come creare le collezioni, parliamo brevemente di cosa sia effettivamente una collezione. 

Se provieni dal mondo SQL, sarai abituato a tabelle, righe e colonne. In MongoDB i termini sono leggermente diversi. Al posto delle tabelle abbiamo le collezioni, e al posto delle righe abbiamo documenti con campi, non colonne. 

Uno dei superpoteri di MongoDB è lo schema dinamico. Significa che non devi creare manualmente una collezione prima di usarla. Se inserisci un documento in una collezione che ancora non esiste, MongoDB la creerà automaticamente. Ad esempio, se esegui: 

db.movies.insertOne({ title: "The Matrix", year: 1999 });

Proverà a inserire un singolo documento per il film “The Matrix” nella collezione movies. Se esiste già, il documento verrà aggiunto alla collezione. Se non esiste, la collezione movies verrà creata prima di aggiungere il nuovo documento.

Puoi anche aggiungere molti documenti in una volta usando insertMany invece di insertOne.

Quando definire esplicitamente le collezioni MongoDB

Anche se puoi lasciare che MongoDB gestisca automaticamente la creazione delle collezioni, ci sono ottimi motivi per definirle in anticipo, soprattutto in produzione. Creare esplicitamente le collezioni ti dà l’opportunità di:

  • Configurare le capped collections per logging o caching.
  • Impostare regole di validazione per imporre vincoli negli schemi.
  • Applicare alcuni indici predefiniti come il time-to-live (TTL). Questi indici su un campo data elimineranno automaticamente i documenti nella tua collezione in base a un intervallo di tempo specificato.
  • Ottimizzare carichi di lavoro con molte scritture pre-dimensionando le collezioni.

Ecco come creeresti una collezione nella MongoDB Shell:

db.createCollection("auditLogs", {
  capped: true,
  size: 10485760, // 10 MB
  max: 1000
});

Oppure con validazione:

db.createCollection("users", {
  validator: {
    $jsonSchema: {
      bsonType: "object",
      required: ["email", "createdAt"],
      properties: {
        email: {
          bsonType: "string",
          pattern: "^.+@.+$"
        },
        createdAt: {
          bsonType: "date"
        }
      }
    }
  }
});

Sebbene MongoDB supporti uno schema flessibile, potresti comunque voler aggiungere regole di validazione come campi obbligatori o specificare proprietà su determinati campi, ad esempio tipi di dati o formattazione per le email, come visto sopra. Questo se vuoi assicurarti che i tuoi documenti seguano uno schema specifico. 

L’applicazione dello schema ti sembrerà familiare se arrivi da SQL, e anche se non è così, a volte le applicazioni in produzione hanno bisogno di documenti con una forma prevedibile. Quindi la validazione è ottima per questo!

Creare collezioni MongoDB con il driver C#

In un’applicazione C# puoi anche creare esplicitamente collezioni usando il driver MongoDB. Anche se non è richiesto per le operazioni di base, è qui che puoi impostare opzioni avanzate in modo programmatico.

var options = new CreateCollectionOptions
{
    Capped = true,
    MaxSize = 10485760, // 10 MB
    MaxDocuments = 1000
};

await database.CreateCollectionAsync("auditLogs", options);

Per aggiungere un validator:

var validator = new BsonDocument
{
    { "$jsonSchema", new BsonDocument
        {
            { "bsonType", "object" },
            { "required", new BsonArray { "email", "createdAt" } },
            { "properties", new BsonDocument
                {
                    { "email", new BsonDocument
                        {
                            { "bsonType", "string" },
                            { "pattern", "^.+@.+$" }
                        }
                    },
                    { "createdAt", new BsonDocument
                        {
                            { "bsonType", "date" }
                        }
                    }
                }
            }
        }
    }
};

var collectionOptions = new CreateCollectionOptions<BsonDocument>
{
    Validator = new BsonDocumentFilterDefinition<BsonDocument>(validator)
};

await database.CreateCollectionAsync("users", collectionOptions);

Per gli sviluppatori Python, il tutorial Introduzione a MongoDB e Python è un’ottima risorsa.

Opzioni di configurazione chiave per le collezioni da conoscere

Quando crei esplicitamente le collezioni, ecco alcune opzioni che potresti voler conoscere:

  • capped: crea una collezione a dimensione fissa
  • size: dimensione massima in byte per una capped collection
  • max: numero massimo di documenti consentiti
  • validator: oggetto JSON in sintassi schema che definisce la validazione dello schema
  • expireAfterSeconds: usato con gli indici TTL per gestire l’eliminazione automatica dei documenti

Puoi anche applicare indici al momento della creazione o subito dopo. MongoDB non crea automaticamente indici a meno che non siano richiesti per _id.

Gli indici in MongoDB ti consentono di migliorare le prestazioni dei campi a cui accedi più spesso. Memorizzano in cache quei valori in memoria, evitando chiamate al disco per il recupero, il che può far risparmiare molto tempo e migliorare le prestazioni quando li accedi regolarmente.

Best practice per definire le collezioni MongoDB

Ecco alcune linee guida per aiutarti a decidere quando definire esplicitamente le collezioni:

  • Creazione implicita per proof of concept rapidi o sviluppo locale, o quando l’utente finale può generare contenuti in modo dinamico
  • Creazione esplicita quando vuoi applicare validazione o impostare configurazioni per indicizzazione o prestazioni

Conclusione

MongoDB è noto per il suo schema flessibile che ci dà libertà nel modo in cui strutturiamo i dati, inclusa la creazione e la gestione delle collezioni. Sebbene la creazione implicita sia rapida e comoda, le definizioni esplicite sbloccano funzionalità potenti come validazione dello schema, comportamento capped e tuning delle prestazioni.

Come sempre, MongoDB Atlas rende la gestione delle collezioni ancora più semplice con strumenti basati su UI, automazione e insight prestazionali integrati. E se lavori in .NET, il driver C# ti supporta con modelli fortemente tipizzati e API fluide.

Quando valuti le best practice per definire le collezioni MongoDB, comprendere i principi fondamentali di progettazione di database può essere utile.

Buon coding! Che le tue collezioni siano veloci, valide e ben indicizzate!

FAQ

Qual è la differenza tra creazione implicita ed esplicita di una collezione in MongoDB?

  • Creazione implicita: MongoDB crea automaticamente una collezione quando inserisci un documento in una collezione inesistente. Utile per prototipazione rapida o sviluppo.
  • Creazione esplicita: definisci manualmente una collezione prima di usarla, spesso per configurare impostazioni avanzate come regole di validazione, dimensione capped o indicizzazione. Consigliata per ambienti di produzione. 

Quando dovrei creare esplicitamente una collezione invece di lasciare che MongoDB la crei automaticamente?

Dovresti creare esplicitamente una collezione quando: validazione dello schema, capped collections, ottimizzazioni delle prestazioni e indici predefiniti.

Come faccio a imporre uno schema in MongoDB se è senza schema?

MongoDB supporta la validazione con JSON schema, che ti consente di definire regole per la struttura dei documenti.

Cosa sono le capped collections e quando dovrei usarle?

Le capped collections sono collezioni a dimensione fissa che sovrascrivono automaticamente i documenti più vecchi quando sono piene. 

Come creo una collezione con un indice TTL (Time-To-Live)?

Gli indici TTL eliminano automaticamente i documenti dopo un tempo specificato. Prima crea la collezione, poi aggiungi l’indice.


Luce Carter's photo
Author
Luce Carter
LinkedIn

Luce Carter è una Senior Developer Advocate presso MongoDB, Microsoft MVP, Contentful Dev Hero, autrice di Beginning MongoDB Atlas with .NET e appassionata di codice, sole e apprendimento.

Argomenti
MongoDB
Data Engineering

Approfondisci MongoDB con questi corsi!

Corso

Introduzione a MongoDB in Python

3 ore
24.4K
Impara a gestire e analizzare dati strutturati in modo flessibile con MongoDB.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Mostra AltroMostra Altro