11 Query e operazioni MongoDB che devi conoscere

MongoDB è uno dei database NoSQL più desiderati e ammirati per lo sviluppo professionale. La sua flessibilità, scalabilità e capacità di gestire grandi volumi di dati lo rendono la scelta migliore per le applicazioni moderne. Se vuoi padroneggiare le query e le operazioni regolari di MongoDB, sei nel posto giusto.

MUO VIDEO DELLA GIORNATA

SCORRI PER CONTINUARE CON I CONTENUTI

Sia che tu stia cercando di recuperare e manipolare in modo efficiente i dati, implementare solidi modelli di dati o creare applicazioni reattive, l’acquisizione di una profonda comprensione delle query e delle operazioni comuni di MongoDB migliorerà senza dubbio le tue capacità.

1. Creare o cambiare database

La creazione di un database in locale tramite MongoDB Shell è semplice, soprattutto se hai configurato un cluster remoto. Puoi creare un nuovo database in MongoDB con il comando use:

 use db_name 

Mentre il comando precedente crea un nuovo database, puoi usarlo per passare a un database esistente senza crearne uno nuovo da zero.

2. Cancella database

Innanzitutto, passa al database che desideri eliminare utilizzando il comando use come fatto in precedenza. Quindi eliminare il database utilizzando il comando dropDatabase():

 use db_name
db.dropDatabase()

3. Crea una raccolta

Per creare una raccolta, passa al database di destinazione. Usa la parola chiave createCollection() per creare una nuova raccolta MongoDB:

 db.createCollection("collection_name")

Sostituisci collection_name con il nome della tua collezione scelta.

4. Inserisci un documento in una raccolta

Durante l’invio di dati a una raccolta, è possibile inserire un singolo documento o una serie di documenti.

Per inserire un singolo documento:

 db.collection_name.insertOne({"Name":"Idowu", "Likes":"Chess"})

Puoi anche utilizzare il metodo sopra per inserire un array di documenti con un ID:

 db.collection_name.insertOne([{"Name":"Idowu", "Likes":"Chess"}, {"Language": "Mongo", "is_admin": true}])

Per inserire più documenti contemporaneamente, ciascuno con ID separati, utilizzare la parola chiave insertMany:

 db.collection_name.insertMany([{"Name":"Idowu", "Likes":"Chess"}, {"Name": "Paul", "Likes": "Wordle"}])

5. Ottieni tutti i documenti da una raccolta

Puoi interrogare tutti i documenti di una raccolta usando la parola chiave find():

 db.collection_name.find()

Quanto sopra restituisce tutti i documenti all’interno della raccolta specificata:

È inoltre possibile limitare i dati restituiti a un numero specifico. Ad esempio, puoi utilizzare il seguente comando per ottenere solo i primi due documenti:

 db.collection_name.find().limit(2)

6. Filtra i documenti in una raccolta

Esistono molti modi per filtrare i documenti in MongoDB. Consideriamo ad esempio i seguenti dati:

Se stai interrogando solo un campo specifico in un documento, usa il metodo find:

 db.collection_name.find({"Likes":"Wordle"}, {"_id":0, "Name":1})

Quanto sopra restituisce tutti i documenti in cui il valore di Mi piace è Wordle. Emette solo i nomi e ignora l’ID del documento.

Puoi anche filtrare una raccolta in base a un fattore numerico. Supponi di voler ottenere i nomi di tutti gli utenti di età superiore a 21 anni, utilizza l’operatore $gt:

 db.collection_name.find({"Likes":"Chess", "Age":{"$gt":21}}, {"_id":0, "Name":1})

L’output è simile al seguente:

Prova a sostituire find con findOne per vedere cosa succede. Tuttavia, ci sono molte altre parole chiave di filtraggio:

  • $lt: tutti i valori inferiori a quello specificato.
  • $gte: valori uguali o superiori a quello specificato.
  • $lte: valori inferiori o uguali a quello definito.
  • $eq: ottiene tutti i valori uguali a quello specificato.
  • $ne: tutti i valori diversi da quello specificato.
  • $in: utilizzare questo quando si esegue una query in base a un array. Ottiene tutti i valori corrispondenti a qualsiasi elemento nell’array. La parola chiave $nin fa il contrario.

7. Ordina le query

L’ordinamento aiuta a organizzare la query in un ordine specifico. Puoi ordinare in ordine decrescente o crescente. Tieni presente che l’ordinamento richiede un riferimento numerico.

Ad esempio, per ordinare in ordine crescente:

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":1})

Per ordinare la query precedente in ordine decrescente, sostituisci “1” con “-1”.

 db.collection_name.find({"Likes":"Chess"}).sort({"Age":-1})

8. Aggiorna un documento

Gli aggiornamenti di MongoDB richiedono operatori atomici per specificare come si desidera eseguire l’aggiornamento. Di seguito è riportato un elenco di operatori atomici di uso comune che è possibile associare a una query di aggiornamento:

  • $set: aggiunge un nuovo campo o modifica un campo esistente.
  • $push: inserisce un nuovo elemento in un array. Associalo all’operatore $each per inserire più elementi contemporaneamente.
  • $pull: rimuove un elemento da un array. Usalo con $in per rimuovere molti elementi in una volta sola.
  • $unset: rimuove un campo da un documento.

Per aggiornare un documento e aggiungere un nuovo campo, ad esempio:

 db.collection_name.updateOne({"Name":"Sandy"}, {"$set":{"Name":"James", "email":"[email protected]"}})

Quanto sopra aggiorna il documento specificato come mostrato:

La rimozione del campo email è semplice con l’operatore $unset:

 db.collection_name.updateOne({"Name":"Sandy"}, {"$unset":{"email":"[email protected]"}})

Considera i seguenti dati di esempio:

È possibile inserire un elemento nel campo dell’array di elementi esistenti utilizzando l’operatore $push:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items":"Plantain"}})

Ecco l’output:

Utilizzare l’operatore $each per inserire più elementi contemporaneamente:

 db.collection_name.updateOne({"Name":"Pete"}, {"$push":{"items": {"$each":["Almond", "Melon"]}}})

Ecco l’output:

Come accennato, l’operatore $pull rimuove un elemento da un array:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items":"Plantain"}})

I dati aggiornati hanno questo aspetto:

Includi la parola chiave $in per rimuovere più elementi in un array in una volta sola:

 db.collection_name.updateOne({"Name":"Pete"}, {"$pull":{"items": {"$in":["Almond", "Melon"]} }}) 

9. Eliminare un documento o un campo

La parola chiave deleteOne o deleteMany elimina un documento da una raccolta. Usa deleteOne per rimuovere un documento in base a un campo specificato:

 db.collection_name.deleteOne({"Name":"IDNoble"})

Se vuoi eliminare molti documenti con chiavi in ​​comune, usa invece deleteMany. La query seguente elimina tutti i documenti che contengono Chess come Mi piace.

 db.collection.deleteMany({"Likes":"Chess"})

10. Operazione di indicizzazione

L’indicizzazione migliora le prestazioni delle query semplificando il numero di documenti che MongoDB deve scansionare. Spesso è meglio creare un indice sui campi che si interrogano più frequentemente.

L’indicizzazione di MongoDB è simile al modo in cui si utilizzano gli indici per ottimizzare le query SQL. Ad esempio, per creare un indice crescente nel campo Nome:

 db.collection.createIndex({"Name":1})

Per elencare i tuoi indici:

 db.collection.getIndexes()

Quanto sopra è solo un preambolo. Esistono molti altri metodi per creare un indice in MongoDB.

11. Aggregazione

La pipeline di aggregazione, una versione migliorata di MapReduce, consente di eseguire e archiviare calcoli complessi dall’interno di MongoDB. A differenza di MapReduce, che richiede la scrittura della mappa e delle funzioni reduce in funzioni JavaScript separate, l’aggregazione è semplice e utilizza solo metodi MongoDB incorporati.

Prendi in considerazione i seguenti dati di vendita, ad esempio:

Utilizzando l’aggregazione di MongoDB, puoi calcolare e archiviare il numero totale di prodotti venduti per ciascuna categoria come segue:

 db.sales.aggregate([{$group:{"_id":"$Section", "totalSold":{$sum:"$Sold"}}}, {$project:{"_id":0, "totalSold":1, "Section":"$_id"}}])

La query precedente restituisce quanto segue:

Padroneggia le query MongoDB

MongoDB offre molti metodi di query, incluse funzionalità per migliorare le prestazioni delle query. Indipendentemente dal tuo linguaggio di programmazione, le strutture di query di cui sopra sono rudimentali per interagire con un database MongoDB.

Tuttavia, potrebbero esserci alcune discrepanze nelle sintassi di base. Ad esempio, mentre alcuni linguaggi di programmazione come Python riconoscono i casi di serpente, altri, incluso JavaScript, usano il caso di cammello. Assicurati di ricercare ciò che funziona per la tecnologia che hai scelto.