Proiezione in MongoDB [con esempi]

Pubblicato: 2020-09-15

MongoDB è uno dei database moderni più famosi per gestire e gestire i big data. È un database NoSQL orientato ai documenti che utilizza documenti simili a JSON per semplificare la gestione dei dati.

Varie idee di progetto MongoDB possono essere facilmente realizzate. Tuttavia, MongoDB presenta anche alcuni inconvenienti. Per impostazione predefinita, qualsiasi query per un documento specifico mostrerà tutti i dati: questo problema viene risolto con l'aiuto della proiezione MongoDB .

Sommario

Che cos'è la proiezione in MongoDB?

La proiezione in MongoDB limita l'output dei dati ai campi specificati invece di mostrarli tutti. Questo viene fatto con l'aiuto del metodo find(). Il metodo find() accetta un parametro opzionale che ci consente di includere o escludere determinati campi di output. Approfondiamo come utilizzare la proiezione in MongoDB .

Sintassi del metodo Find()

La proiezione in MongoDB viene effettuata con l'aiuto del metodo find(), la cui sintassi è:

db. collection_name .find({}, { field_Key:1 o 0 })

Nella sintassi sopra, nome_raccolta è il documento da cui dobbiamo recuperare i dati. Quindi ci sono due parametri nel metodo find(): il primo accetta una query e il secondo viene utilizzato per la proiezione. Il field_Key nella sintassi è il nome del campo che vogliamo includere o escludere.

Abbiamo bisogno di passare un valore booleano per ogni field_ Key . Questo valore definisce se vogliamo includere il campo o escluderlo. Se inseriamo 1 in un campo, verrà mostrato nei risultati e se includiamo 0, sarà nascosto.

Il database di esempio

Creiamo un documento di esempio in un database in modo da potervi fare riferimento in tutto questo articolo.

db.example.studentData([

{_id: ObjectId(“59kf63795bc1d”), student_name: “Alexander”, student_id: 01, student_status: “A”, student_age: 22}

{_id: ObjectId(“59ke62794bc1d”), student_name: “Steve”, student_id: 02, student_status: “A”, student_age: 23}

{_id: ObjectId(“59kg73795bf1e”), student_name: “Luca”, student_id: 03, student_status: “A”, student_age: 21}

{_id: ObjectId(“59kb69995ah1d”), student_name: “Bravo”, student_id: 04, student_status: “B”, student_age: 25}

])

Questo è il nostro documento di database denominato esempio che useremo come riferimento in tutti i nostri esempi.

Recupero dei dati con e senza proiezione in MongoDB

1. La sintassi per il recupero senza proiezione

Recupero di tutti i campi (perché non si utilizza la proiezione) degli studenti con status_studente: "A".

db.example.find({student_status: "A"})

Ciò corrisponde a Seleziona * dall'esempio WHERE student_status = query "A" in SQL. Il recupero dei dati senza proiezione in MongoDB produrrà il seguente risultato:

{“_id”: ObjectId(“59kf63795bc1d”), “student_name”: “Alexander”, “student_id”: 01, “student_status”: “A”, student_age: 22}

{“_id”: ObjectId(“59ke62794bc1d”), “student_name”: “Steve”, “student_id”: 02, “student_status”: “A”, “student_age”: 23}

{“_id”: ObjectId(“59kg73795bf1e”), “student_name”: “Luca”, “student_id”: 03, “student_status”: “A”, student_age: 21}

Per impostazione predefinita, visualizza tutti i campi dei dati in cui student_status = "A". Per limitare i campi di output possiamo usare la proiezione in MongoDB .

2. La sintassi per il recupero con la proiezione

Recupero nome_studente e stato_studente di tutti gli studenti.

db.example.find({}, {nome_studente: 1, stato_studente: 1})

Questo mostrerà il seguente risultato:

{“_id”: ObjectId(“59kf63795bc1d”), “student_name”: “Alexander”, “student_status”: “A”}

{“_id”: ObjectId(“59ke62794bc1d”), “student_name”: “Steve”, “student_status”: “A”}

{“_id”: ObjectId(“59kg73795bf1e”), “student_name”: “Luca”, “student_status”: “A”}

{“_id”: ObjectId(“59kb69995ah1d”), student_name: “Bravo”, student_status: “B”}

_id viene mostrato per impostazione predefinita durante l'utilizzo della proiezione in MongoDB a meno che non lo sopprimiamo.

Sopprimere _id durante l'utilizzo della proiezione in MongoDB

Sopprimendo _id predefinito e mostrando student_id, student_name e student_status di tutti gli studenti.

db.example.find({}, {_id: 0, student_id: 1, student_name: 1, student_status: 1})

Ciò produrrà il seguente risultato:

{"student_id": 01, "student_name": "Alexander", "student_status": "A"}

{“student_id”: 02, “student_name”: “Steve”, “student_status”: “A”}

{“student_id”: 03, “student_name”: “Luca”, “student_status”: “A”}

{“student_id”: 04, “student_name”: “Bravo”, student_status: “B”}

3. Combinare inclusione ed esclusione

Escluso _id e student_id, inclusi nome_studente e stato_studente di tutti gli studenti.

db.example.find({}, {_id: 0, student_id: 0, student_name: 1, student_status: 1})

Ciò produrrà il seguente risultato:

Errore: errore: {

“waitedMS” : NumberLong(0),

“ok” : 0,

“errmsg” : “La proiezione non può avere un mix di inclusione ed esclusione.”,

“codice” : 2

}

La combinazione di inclusione ed esclusione durante l'utilizzo della proiezione MongoDB genererà un errore perché non possiamo eseguire entrambi nella stessa query. Il campo _id è un'eccezione a questa regola.

Avresti notato che abbiamo usato una combinazione di inclusione ed esclusione nel nostro esempio precedente in cui abbiamo soppresso _id e mostrato alcuni altri campi, e ha funzionato bene. A causa dell'eccezione alla regola, abbiamo escluso _id e incluso il resto dei campi.

4. Specificare la proiezione in MongoDB per esclusione

Escludendo _id e student_status di tutti gli studenti e mostrando gli altri campi.

db.example.find({}, {_id: 0, student_status: 0})

{“student_name”: “Alexander”, “student_id”: 01, “student_age”: 22}

{“student_name”: “Steve”, “student_id”: 02, “student_age”: 23}

{“student_name”: “Luca”, “student_id”: 03, “student_age”: 21}

{“student_name”: “Bravo”, “student_id”: 04, “student_age”: 25}

Puoi anche utilizzare i quattro operatori di proiezione per limitare i campi di output, ma non sono supportati dal metodo find(). Gli operatori di proiezione che possono essere utilizzati sono: $, $elemMatch, $slice e $meta.

Leggi anche: Casi d'uso del mondo reale di MongoDB

Conclusione

Con l'uso della proiezione in MongoDB , possiamo assumere il controllo della visualizzazione dei dati nel front-end, il che aumenta i casi d'uso nel mondo reale . MongoDB ha raggiunto diversi traguardi negli ultimi anni. Ciò ha reso brillante la portata futura di MongoDB e numerose aziende sono alla ricerca di sviluppatori full-stack con la conoscenza di MongoDB.

Ora è quindi un ottimo momento per includere le competenze di MongoDB nel tuo curriculum. Ma poi, gestire solo un database non è sufficiente nel mondo competitivo di oggi. Pertanto, sarebbe d'aiuto se mirassi a diventare uno sviluppatore full-stack o ad apprendere l'analisi aziendale per comprendere e analizzare i dati che stai gestendo e aiutare le aziende a funzionare bene. upGrad può aiutarti a iniziare.

Noi di upGrad forniamo fonti di apprendimento dettagliate insieme a esperienza pratica e assistenza sul lavoro. Abbiamo collaborato con più istituti per offrirti il ​​meglio dell'istruzione e della certificazione. Puoi scegliere se vuoi iscriverti al corso di certificazione Business Analytics o seguire un corso PG Diploma di sviluppo software full-stack . Qualunque cosa tu voglia intraprendere come carriera nella tua vita, ti abbiamo coperto.

Impara i corsi di sviluppo software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Guida la rivoluzione tecnologica basata sui dati

Programma di certificazione avanzato in Big Data da IIIT Bangalore