Che cos'è MongoDB?

MongoDB è un database di documenti, noto per la facilità d'uso e la scalabilità. È un tipo di database NoSQL che utilizza un approccio più flessibile all'archiviazione dei dati rispetto al tradizionale formato basato su tabelle che si trova nei database relazionali come PostgreSQL.

Invece di righe e colonne, MongoDB archivia i dati in documenti simili a JSON con campi altamente personalizzabili e valori corrispondenti. Ecco un semplice esempio di come potresti archiviare un profilo utente in un documento:

“_id”: “6327c1a4b3e3e8a5e6f7g6j1”,

“first_name”: “Praveen”,

“occupation”: “Developer”,

“employment_date”: “12/1/2025”

Poiché MongoDB ha uno schema flessibile, non devi utilizzare gli stessi campi in tutti i tuoi documenti. Potresti eliminare il campo "occupation", aggiungere un campo "email_address" e così via.

Tuttavia, questa flessibilità può causare problemi in futuro se lo stesso tipo di dati viene salvato in modo incoerente tra i documenti, ad esempio utilizzando un campo "email" in un punto e "email_address" in un altro o salvando le date in formati diversi.

Se utilizzassi un database relazionale per archiviare questo tipo di dati, in cui alcuni profili utente hanno una professione registrata e altri no, potresti ritrovarti con tabelle piene di dati inutili con molti campi vuoti o con una struttura di dati complessa e ripetitiva distribuita su più tabelle.

Vuoi passare direttamente alla configurazione di un database orientato ai documenti? Scopri come iniziare a utilizzare Firestore.

Esegui app compatibili con MongoDB su Firestore

Concetti fondamentali

MongoDB è un database di documenti NoSQL, ideale per la gestione di grandi quantità di dati non strutturati o semistrutturati. Ecco una rapida panoramica delle funzionalità e dei vantaggi principali di MongoDB:

  • Modello di documento: i dati vengono archiviati in "documenti" simili a JSON. A differenza di un documento nel senso comune del termine, che contiene testo in formato libero per i lettori umani, un documento simile a JSON utilizza coppie campo-valore per organizzare i dati in modo semplice da leggere per le applicazioni.
  • Schema flessibile: ogni documento in MongoDB può avere i propri campi e la propria struttura, offrendo maggiore flessibilità rispetto alle rigide colonne e righe dei database relazionali.
  • Altamente scalabile: MongoDB è progettato per fare lo scale out orizzontalmente, distribuendo il workload in modo efficiente su più server, il che lo rende adatto all'espansione o alla riduzione dei dati in base alle richieste di traffico.
  • Intuitivo: alcuni sviluppatori preferiscono MongoDB perché il linguaggio di query ha una struttura simile a quella di linguaggi di programmazione familiari come JavaScript, quindi è facile iniziare a usarlo.
  • Supporto multilingue: con driver per la maggior parte dei linguaggi di programmazione, tra cui Java, Python e C, è semplice per un'ampia varietà di applicazioni eseguire query su un database MongoDB.

Vantaggi dell'utilizzo di MongoDB

MongoDB, sia il prodotto originale che diversi altri database compatibili con esso, sono diventati una scelta popolare per gli sviluppatori perché offrono una notevole flessibilità in un pacchetto di facile utilizzo.

  • Schema flessibile per sviluppo agile: con MongoDB, puoi personalizzare il livello di struttura e convalida dello schema. Puoi iniziare con una struttura rilassata per una prototipazione rapida, quindi introdurre regole di convalida rigorose ed evolvere il modello di dati man mano che l'applicazione matura. Se vuoi creare rapidamente senza definire in anticipo l'intera struttura dei dati, la flessibilità di MongoDB può essere estremamente utile.
  • Scalabilità orizzontale per l'adattabilità: MongoDB è progettato per la scalabilità orizzontale, che consente di distribuire i dati su più nodi o cluster, un processo noto come "sharding". Condividendo il carico su più server, puoi salvare o richiamare rapidamente i dati e adattarti alla riduzione o all'aumento della domanda.
  • Alta affidabilità: MongoDB offre la replica dei dati integrata per favorire alta affidabilità e tolleranza di errore. In caso di guasto hardware o durante la manutenzione, più copie di dati su diversi server di database consentono al database di fornire un failover automatico.

Query facili da usare in MongoDB

MongoDB Query Language (MQL) è progettato per essere immediatamente familiare agli sviluppatori, in particolare a quelli che conoscono JavaScript. Questo può rendere più facile iniziare a scrivere query efficaci per recuperare, aggiornare o eliminare i dati.

Hai la flessibilità di trovare i dati esatti di cui hai bisogno con diversi tipi di query, tra cui:

  • Query di campo: trova una corrispondenza esatta a un valore specifico tra i documenti, ad esempio tutti gli utenti il cui campo "professione" è esattamente "Sviluppatore".
  • Query di intervallo: trova i dati che rientrano in un determinato intervallo, ad esempio tutti gli utenti la cui età è superiore a 35 anni.
  • Query con espressione regolare(regex): trova il testo che corrisponde a un pattern specifico. Ad esempio, puoi trovare tutti gli utenti il cui nome inizia con la lettera "B".

Nel complesso, MongoDB eccelle nel recupero di informazioni su oggetti interi. Ad esempio, se vuoi raccogliere tutte le informazioni su un utente, come il nome, la cronologia degli ordini e le preferenze, è probabile che siano tutte in un unico documento. Una singola query può recuperare rapidamente tutto ciò di cui hai bisogno.

Tuttavia, MongoDB è meno efficiente per le query che richiedono JOIN complesse su molte raccolte diverse e altamente strutturate, dove invece eccelle un database relazionale.

Casi d'uso comuni di MongoDB

MongoDB è particolarmente adatto a una varietà di esigenze delle applicazioni moderne, tra cui:

I database di documenti come MongoDB possono essere una solida base per la ricerca semantica che alimenta i modelli di AI, che spesso devono ricordare le interazioni passate e le preferenze degli utenti. I database di documenti possono archiviare questa "memoria" come documenti JSON o BSON (JSON binario) flessibili, consentendo un facile aggiornamento e recupero di strutture di dati complesse.

Il modello di documento flessibile di MongoDB lo rende ideale per archiviare articoli, commenti, dati utente e altri contenuti vari senza schemi rigidi.

I prodotti di vendita al dettaglio spesso hanno attributi diversi (taglie, colori, materiali ecc.). MongoDB può facilmente ospitare questi diversi punti dati.

MongoDB può archiviare ed elaborare grandi volumi di dati di sensori, eventi e metriche, consentendo di ottenere informazioni in tempo reale.

L'archiviazione delle preferenze degli utenti, della cronologia di navigazione e dei contenuti personalizzati è semplice con il formato JSON di MongoDB.

Alternative a MongoDB

MongoDB può essere la scelta giusta per diversi tipi di applicazioni, in particolare quelle che si basano su dati semistrutturati o non strutturati oppure quelle in cui il modello di dati è destinato a evolversi. Tuttavia, vale la pena valutare altre opzioni di database per assicurarsi di fare la scelta giusta.

MongoDB, Apache Cassandra e i database SQL offrono vantaggi distinti a seconda del caso d'uso specifico. Analizziamo alcune delle loro differenze per aiutarti a scegliere l'opzione giusta per la tua applicazione.

Funzionalità

Database SQL (relazionali)

MongoDB (NoSQL)

Apache Cassandra (NoSQL)

Modello dei dati

In tabelle (righe e colonne)

Documenti di tipo JSON

Archivio a colonne (colonne flessibili per riga all'interno di una tabella)

Schema

Schema rigido e predefinito

Schema flessibile e dinamico

Più strutturato di un database di documenti, ma con una certa flessibilità (le colonne possono variare per riga)

Linguaggio di query

SQL (Structured Query Language)

MongoDB Query Language (MQL)

Cassandra Query Language (CQL)

Scalabilità

Verticale (scale up), orizzontale complesso

Orizzontale (scale out) mediante sharding

Orizzontale (scale out) su molti nodi, progettato per la distribuzione massiccia

Struttura dei dati

Dati strutturati

Dati non strutturati, semistrutturati e strutturati

Dati non strutturati, semistrutturati e strutturati

Relazioni

Chiavi esterne e JOIN

Documenti incorporati, riferimenti

Denormalizzazione

Ideale per

Applicazioni che richiedono una forte coerenza dei dati e query complesse con JOIN

Sviluppo rapido, evoluzione dei modelli di dati e facilità d'uso

Throughput di scrittura estremo, alta affidabilità e dati su larga scala

Funzionalità

Database SQL (relazionali)

MongoDB (NoSQL)

Apache Cassandra (NoSQL)

Modello dei dati

In tabelle (righe e colonne)

Documenti di tipo JSON

Archivio a colonne (colonne flessibili per riga all'interno di una tabella)

Schema

Schema rigido e predefinito

Schema flessibile e dinamico

Più strutturato di un database di documenti, ma con una certa flessibilità (le colonne possono variare per riga)

Linguaggio di query

SQL (Structured Query Language)

MongoDB Query Language (MQL)

Cassandra Query Language (CQL)

Scalabilità

Verticale (scale up), orizzontale complesso

Orizzontale (scale out) mediante sharding

Orizzontale (scale out) su molti nodi, progettato per la distribuzione massiccia

Struttura dei dati

Dati strutturati

Dati non strutturati, semistrutturati e strutturati

Dati non strutturati, semistrutturati e strutturati

Relazioni

Chiavi esterne e JOIN

Documenti incorporati, riferimenti

Denormalizzazione

Ideale per

Applicazioni che richiedono una forte coerenza dei dati e query complesse con JOIN

Sviluppo rapido, evoluzione dei modelli di dati e facilità d'uso

Throughput di scrittura estremo, alta affidabilità e dati su larga scala

MongoDB e database SQL

I database SQL (come PostgreSQL) e i database di documenti NoSQL (come MongoDB) rappresentano due approcci fondamentali alla gestione dei dati.

A differenza di MongoDB, i database SQL, chiamati anche database relazionali, organizzano i dati in tabelle. Ogni tabella ha un formato predefinito con righe e colonne, quindi i database SQL sono spesso definiti "rigidi" rispetto al formato dei documenti di MongoDB.

L'attrattiva dei database SQL come PostgreSQL è la capacità di eseguire query complesse con JOIN, combinando informazioni provenienti da più tabelle con elevata efficienza. Potrebbe trattarsi di una query come "Mostrami i clienti di Chicago, di età superiore a 30 anni, che hanno acquistato una maglietta blu il mese scorso".

MongoDB e Apache Cassandra a confronto

MongoDB e Apache Cassandra sono entrambi potenti database NoSQL, ma sono basati su architetture fondamentalmente diverse e sono ottimizzati per casi d'uso diversi.

Apache Cassandra è un archivio a colonne larghe, il che significa che organizza i dati in righe e colonne, ma con uno schema flessibile che consente a righe diverse di avere colonne diverse all'interno della stessa famiglia di colonne.

È anche noto per la gestione di enormi quantità di dati su molti server, fornendo alta affidabilità e alte prestazioni di scrittura su sistemi distribuiti.

Quali database sono compatibili con MongoDB?

Se vuoi creare con MongoDB, puoi scegliere tra diversi percorsi. Puoi ottenere il database direttamente dai suoi creatori, MongoDB Inc., o utilizzare un servizio compatibile con MongoDB di un fornitore diverso. Compatibilità significa che supporta l'API e il linguaggio di query MongoDB (MQL), consentendoti di utilizzare lo stesso codice, gli stessi driver e gli stessi strumenti con modifiche minime, pur usufruendo di funzionalità aggiuntive o di vantaggi in termini di prestazioni.

Ecco alcune delle opzioni più note compatibili con MongoDB:

  • Versioni MongoDB Community ed Enterprise : sono le versioni originali e scaricabili di MongoDB. Puoi eseguirle sulla tua infrastruttura, mantenendo il controllo completo del deployment.
  • MongoDB Atlas: un'opzione di database-as-a-service (DBaaS) dei creatori di MongoDB. Atlas è un servizio cloud completamente gestito che si occupa di tutta l'infrastruttura, della scalabilità, dei backup e della sicurezza. È offerto su diverse piattaforme cloud, tra cui Google Cloud.
  • Firestore: un'altra opzione completamente gestita per gli sviluppatori che vogliono concentrarsi sulla creazione di applicazioni senza preoccuparsi delle operazioni. Firestore è un database di documenti NoSQL che offre una suite di funzionalità uniche, che tratteremo in modo più dettagliato di seguito.
  • Amazon DocumentDB: un servizio di database gestito di Amazon Web Services (AWS) compatibile con l'API MongoDB. È progettato come sostituto immediato per le applicazioni che già utilizzano MongoDB e vogliono essere eseguite su un'infrastruttura AWS.
  • Azure Cosmos DB: il servizio di database multi-modello distribuito a livello globale di Microsoft fornisce anche un'API per MongoDB. Ciò ti consente di utilizzare gli strumenti e le competenze MongoDB che già conosci per creare applicazioni sulla piattaforma cloud Azure.

Domande frequenti su MongoDB

Un database di documenti è un tipo di database NoSQL che archivia i dati in unità flessibili chiamate "documenti", che in genere sono formattati in una struttura simile a JSON. A differenza di una tabella con righe e colonne, questi documenti formattano le informazioni in coppie campo-valore, ad esempio "Nome": "Giovanni".

Ogni documento contiene in genere dati su un oggetto, ad esempio un prodotto del tuo inventario. In una raccolta di documenti puoi utilizzare campi diversi, il che rende questo tipo di database eccellente quando non vuoi elaborare una struttura di dati completamente perfetta prima di iniziare a creare la tua applicazione o quando archivi informazioni su oggetti con un'ampia varietà di variabili.

Il tipo di database che scegli dipende dal tipo di dati che stai archiviando, dalle esigenze della tua applicazione e dalla flessibilità di cui hai bisogno.

Un database di documenti è eccellente per i dati con molte variabili, in cui non tutti gli oggetti avranno bisogno degli stessi campi. La flessibilità dei database di documenti può renderli popolari anche tra gli sviluppatori che vogliono creare rapidamente con una struttura di dati che può cambiare nel tempo.

Un database relazionale, d'altra parte, è la scelta migliore se vuoi una rigorosa coerenza dei dati, come nel caso degli account utente in cui ogni voce deve avere esattamente gli stessi campi compilati. Se la tua applicazione si basa su query complesse che utilizzano JOIN, estraendo dati da più tabelle per produrre un risultato, un database relazionale sarà lo strumento ideale per il lavoro.

MongoDB supporta un'ampia varietà di linguaggi di programmazione per l'interazione con il database, tra cui JavaScript, Python, Java, C#, C++, e molti altri. MongoDB Query Language (MQL), utilizzato per le operazioni di database, è un linguaggio simile a JSON.

MongoDB è considerato generalmente facile da usare perché l'utilizzo di una struttura di dati simile a JSON (BSON) e di uno schema flessibile rende l'archiviazione e il recupero dei dati di base intuitivi per gli sviluppatori moderni. Tuttavia, può diventare più difficile da padroneggiare per casi d'uso avanzati, principalmente a causa della complessità della progettazione di modelli di dati efficienti (embedding rispetto al riferimento) e della padronanza del framework di aggregazione a più fasi necessario per query complesse e scalabilità ad alte prestazioni.

Che cos'è Firestore con funzionalità MongoDB?

Firestore è un database di documenti completamente gestito che offre la semplicità della gestione dei dati cloud con un'integrazione perfetta con Firebase, una piattaforma progettata per la creazione di app e agenti di AI.

Firestore è completamente compatibile con driver, strumenti e codice MongoDB, il che semplifica l'avvio di un nuovo progetto o la migrazione di un'applicazione esistente mantenendo un linguaggio di query e funzionalità familiari.

  • Completamente gestito da Google Cloud: tutta l'amministrazione operativa, come scalabilità, aggiornamento, backup e sicurezza, è gestita da Google.
  • Aggiornamenti in tempo reale: mantieni i tuoi utenti connessi con i dati in tempo reale. Firestore eccelle nella sincronizzazione dei dati in tempo reale, il che lo rende ideale per le applicazioni che richiedono aggiornamenti live, come le applicazioni di chat, gli strumenti di collaborazione o le app mobile con esigenze di aggiornamento istantaneo dei dati.
  • Scalabilità globale: grazie alla scalabilità automatica e alla replica dei dati multiregionale di Firestore, puoi gestire la crescita senza sforzo e garantire una bassa latenza per gli utenti di tutto il mondo, senza la necessità di configurare la capacità, lo sharding o il provisioning dell'archiviazione.
  • Disponibilità e prestazioni leader del settore: Firestore vanta un'alta affidabilità leader del settore fino al 99,999% di SLA e prestazioni di latenza di lettura a singola cifra in millisecondi.
  • Database vettoriale: puoi archiviare i vector embedding ed eseguire la ricerca vettoriale tra i tuoi dati in Firestore. Questo ti consente di eseguire le ricerche di somiglianza veloci che sono la spina dorsale delle moderne applicazioni e agenti di AI.
  • Integrazione Google Cloud integrata: in quanto parte di Google Cloud e Firebase, Firestore offre integrazioni perfette con Firebase Auth, BigQuery e molti altri servizi potenti.
  • Livello senza costi per un utilizzo limitato: Firestore offre un livello senza costi, che lo rende ideale per le startup o i progetti più piccoli che vogliono scalare man mano che crescono senza costi iniziali.

Fai un passo avanti

Prova un database di documenti potente e scalabile con il livello gratuito disponibile ora. Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud