Projektion in MongoDB [mit Beispielen]
Veröffentlicht: 2020-09-15MongoDB ist eine der bekanntesten modernen Datenbanken zur Handhabung und Verwaltung von Big Data. Es handelt sich um eine dokumentenorientierte NoSQL-Datenbank, die JSON-ähnliche Dokumente verwendet, um die Verwaltung von Daten zu vereinfachen.
Verschiedene MongoDB-Projektideen können einfach zum Leben erweckt werden. MongoDB hat jedoch auch einige Nachteile. Standardmäßig zeigt jede Abfrage für ein bestimmtes Dokument alle Daten an – dieses Problem wird mit Hilfe der MongoDB-Projektion gelöst .
Inhaltsverzeichnis
Was ist Projektion in MongoDB?
Die Projektion in MongoDB beschränkt die Ausgabe von Daten auf bestimmte Felder, anstatt sie alle anzuzeigen. Dies geschieht mit Hilfe der Methode find(). Die Methode find() akzeptiert einen optionalen Parameter, mit dem wir bestimmte Ausgabefelder entweder einschließen oder ausschließen können. Lassen Sie uns tief in die Verwendung der Projektion in MongoDB eintauchen .
Syntax der Methode Find()
Die Projektion in MongoDB erfolgt mit Hilfe der Methode find(), deren Syntax lautet:
db. Sammlungsname .find({}, { field_Key:1 oder 0 })
In der obigen Syntax ist collection_name das Dokument, aus dem wir Daten abrufen müssen. Dann gibt es zwei Parameter in der Methode find () - der erste akzeptiert eine Abfrage und der zweite wird für die Projektion verwendet. Der field_Key in der Syntax ist der Name des Felds, das wir einschließen oder ausschließen möchten.

Wir müssen für jeden field_ Key einen booleschen Wert übergeben . Dieser Wert definiert, ob wir das Feld einschließen oder ausschließen möchten. Wenn wir 1 in ein Feld eingeben, wird es in den Ergebnissen angezeigt, und wenn wir 0 eingeben, wird es ausgeblendet.
Die Beispieldatenbank
Lassen Sie uns ein Beispieldokument in einer Datenbank erstellen, damit wir in diesem Artikel darauf verweisen können.
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: "Luke", student_id: 03, student_status: "A", student_age: 21}
{_id: ObjectId("59kb69995ah1d"), student_name: "Bravo", student_id: 04, student_status: "B", student_age: 25}
])
Dies ist unser Datenbankdokument mit dem Namen example, das wir in all unseren Beispielen als Referenz verwenden werden.
Abrufen von Daten mit und ohne Projektion in MongoDB
1. Die Syntax zum Abrufen ohne Projektion
Abrufen aller Felder (ohne Projektion) von Studenten mit student_status: „A“.
db.example.find({student_status: „A“})
Dies entspricht Select * from example WHERE student_status = „A“ Abfrage in SQL. Das Abrufen von Daten ohne Projektion in MongoDB führt zu folgendem Ergebnis:
{„_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": "Luke", "student_id": 03, "student_status": "A", student_age: 21}
Standardmäßig werden alle Felder der Daten angezeigt, bei denen student_status = „A“. Um die Ausgabefelder einzuschränken, können wir in MongoDB die Projektion verwenden .
2. Die Syntax zum Abrufen mit Projektion
Abrufen von student_name und student_status aller Studenten.
db.example.find({}, {student_name: 1, student_status: 1})
Dies zeigt das folgende Ergebnis:
{"_id": ObjectId("59kf63795bc1d"), "student_name": "Alexander", "student_status": "A"}

{"_id": ObjectId("59ke62794bc1d"), "student_name": "Steve", "student_status": "A"}
{"_id": ObjectId("59kg73795bf1e"), "student_name": "Luke", "student_status": "A"}
{„_id“: ObjectId(“59kb69995ah1d“), student_name: „Bravo“, student_status: „B“}
Die _id wird standardmäßig angezeigt, wenn die Projektion in MongoDB verwendet wird , es sei denn, wir unterdrücken sie.
Unterdrückung von _id bei Verwendung der Projektion in MongoDB
Unterdrückung der standardmäßigen _id und Anzeige von student_id, student_name und student_status aller Studenten.
db.example.find({}, {_id: 0, student_id: 1, student_name: 1, student_status: 1})
Dies führt zu folgendem Ergebnis:
{„student_id“: 01, „student_name“: „Alexander“, „student_status“: „A“}
{„student_id“: 02, „student_name“: „Steve“, „student_status“: „A“}
{"student_id": 03, "student_name": "Luke", "student_status": "A"}
{"student_id": 04, "student_name": "Bravo", student_status: "B"}
3. Kombination von Inklusion und Exklusion
Ausgenommen _id und student_id, einschließlich student_name und student_status aller Studenten.
db.example.find({}, {_id: 0, student_id: 0, student_name: 1, student_status: 1})
Dies führt zu folgendem Ergebnis:
Fehler: Fehler: {
„waitedMS“ : NumberLong(0),
"ok" : 0,
„errmsg“ : „Projektion darf keine Mischung aus Inklusion und Exklusion haben.“,
„Code“: 2
}
Das Kombinieren von Inklusion und Exklusion bei Verwendung der MongoDB-Projektion löst einen Fehler aus, da wir nicht beide in derselben Abfrage ausführen können. Das Feld _id ist eine Ausnahme von dieser Regel.
Sie hätten bemerkt, dass wir in unserem vorherigen Beispiel eine Kombination aus Inklusion und Exklusion verwendet haben, wo wir _id unterdrückt und einige andere Felder angezeigt haben, und es hat gut funktioniert. Aufgrund der Ausnahme von der Regel hatten wir _id ausgeschlossen und die restlichen Felder eingeschlossen.
4. Festlegen der Projektion in MongoDB durch Ausschluss
Ausschließen von _id und student_status aller Studenten und Anzeigen der anderen Felder.
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“: „Luke“, „student_id“: 03, „student_age“: 21}
{"student_name": "Bravo", "student_id": 04, "student_age": 25}
Sie können auch die vier Projektionsoperatoren verwenden, um die Ausgabefelder einzuschränken, aber sie werden von der Methode find() nicht unterstützt. Die verwendbaren Projektionsoperatoren sind $, $elemMatch, $slice und $meta.

Lesen Sie auch: MongoDB Real World Use Cases
Fazit
Mit der Verwendung von Projektion in MongoDB können wir die Anzeige von Daten im Front -End steuern, was die Anwendungsfälle in der realen Welt erweitert . MongoDB hat in den letzten Jahren mehrere Meilensteine erreicht. Dies hat den zukünftigen Umfang von MongoDB hell gemacht, und zahlreiche Unternehmen suchen nach Full-Stack-Entwicklern mit dem Wissen von MongoDB.
Daher ist jetzt ein guter Zeitpunkt, um die Fähigkeiten von MongoDB in Ihren Lebenslauf aufzunehmen. Aber in der heutigen wettbewerbsorientierten Welt reicht es nicht aus, nur eine Datenbank zu verwalten. Daher wäre es hilfreich, wenn Sie ein Full-Stack-Entwickler werden oder Business Analytics lernen möchten, um die von Ihnen verwalteten Daten zu verstehen und zu analysieren und Unternehmen dabei zu helfen, gute Leistungen zu erbringen. upGrad kann Ihnen beim Einstieg helfen.
Wir bei upGrad bieten detaillierte Lernquellen zusammen mit praktischer Erfahrung und Arbeitsunterstützung. Wir haben mit mehreren Instituten zusammengearbeitet, um Ihnen die beste Ausbildung und Zertifizierung zu bieten. Sie können wählen, ob Sie sich für den Business Analytics-Zertifizierungskurs anmelden oder sich für einen Full-Stack-Softwareentwicklungs-PG-Diplomkurs entscheiden möchten . Was auch immer Sie beruflich in Ihrem Leben anstreben, bei uns sind Sie richtig.
Lernen Sie Softwareentwicklungskurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
