MongoDB $ ifnull -Operator

MongoDB $ ifnull -Operator

Während wir Operatoren verwenden, können wir nicht nur Vergleiche zwischen Operanden vornehmen, sondern auch nach den fehlenden Werten suchen, die Datensätze aktualisieren und vieles mehr. Der Ifnull -Operator von MongoDB, einem solchen Operator, hat seinen besonderen Platz, da er überprüft, ob das spezifische Feld einen Nullwert enthält oder nicht. Wenn das bestimmte Feld einen Nullwert hat, können wir entsprechend durchführen: Ersetzen Sie den Wert durch einen neuen Wert oder machen Sie ihn leer. In diesem Tutorial lernen Sie die Verwendung des IFNULL -Operators von MongoDB unter Verwendung von MongoDB -Shell kennen. Daher sollten Sie MongoDB zusammen mit seinen Abhängigkeiten installieren lassen.

Datenbank und Sammlung erstellen

Lassen Sie uns auf die Implementierung einiger Abfragen in der MongoDB -Hülle zugehen, um die Verwendung des „IFNULL“ -Preibers von MongoDB anzuzeigen. Vorher sehen wir uns die Verfügbarkeit aktueller Datenbanken an. Derzeit haben wir 3 integrierte Datenbanken in unserem MongoDB gemäß der Anweisung „Show DBS“ zur Verfügung. Wir müssen die Dummy -Datenbank erstellen, die wir in unseren kommenden Beispielen verwenden werden. Dafür sollten wir zuerst eine Datenbanksammlung erstellen.

Test> DBS anzeigen
admin 40.00 KIB
Konfiguration 60.00 KIB
Lokal 72.00 KIB

Bei der Überprüfung der gesamten Sammlungen haben wir in unserer Datenbank festgestellt, dass es vorerst keine Sammlung gibt und wir eine erstellen müssen, die die Anweisung „Sammlung anzeigen“ ist.

Test> Sammlungen anzeigen

Um eine neue Sammlung zu erstellen, sollten Sie die „CreateCollection“ -Methode von MongoDB in seiner Shell ausführen. Es sollte den Namen einer neu erstellten Sammlung in den Parametern "Daten" aufnehmen. Das Ausgabeergebnis wie OK: 1 zeigt, dass Ihre Sammlung „Daten“ erfolgreich generiert wird.

Test> db.CreateCollection ("Daten")
OK: 1

Wenn Sie jetzt nach allen Sammlungen suchen, sehen Sie dort eine neu gemachte Sammlung, die dort aufgeführt ist.

Test> Sammlungen anzeigen
Daten

Nachdem wir eine neue Sammlung in der MongoDB -Datenbank generiert haben, wird in der Liste die Datenbank „Test“ angezeigt, die wir verwendet haben, ohne auch nicht nur zu erstellen, ohne zu erstellen, in der Liste.

Test> DBS anzeigen
admin 40.00 KIB
config 108.00 KIB
Lokal 72.00 KIB
Test 144.00 KIB

Fügen Sie Datensätze zur Sammlung ein

Im Moment sollten Sie sicher sein, dass die Sammlung „Daten“ leer ist, da wir keine Datensätze hinzugefügt haben. Daher macht eine leere Sammlung keinen Sinn und wir müssen Dokumente in sie einfügen. Da wir für den Operator „$ ifnull“ gearbeitet haben, sollten wir auch die Felder mit Nullwerten hinzufügen. Ausgehend von der Einführung neuer dokumentierter Datensätze in der Sammlung „Daten“ haben wir die Funktion InsertMany () von MongoDB ausprobiert, um mehr als 1 Datensatz gleichzeitig einzufügen. Die Einführung von insgesamt 6 Aufzeichnungen hat in einem Schritt stattgefunden.

Die Datensätze sollten sich in einem Array -Format oder [] Klammern zu Beginn und am Ende der Datensätze befinden. Jeder Datensatz sollte durch ein Komma- und Curly "" -Krackets getrennt werden. Fast alle Datensätze haben zumindest 2 Felder: Feld "Name" und "Alter". Während alle Felder "Name" einen Zeichenfolgenwert enthalten. Nach der erfolgreichen Ausführung dieser Einfügungsabfrage für die Sammlung „Daten“ erhalten Sie die Bestätigung auf dem Bildschirm "MongoDB Shell", wobei die automatisch generierten IDs für jeden Datensatz angezeigt werden.

Test> db.Daten.InsertMany ([Name: "Peter", Alter: 24, Name: "Ana", Alter: NULL, Name: "Bryan", Alter: "", Name: "Nina", Alter: 33 , Name: "John", Name: "Michael", Alter: undefiniert])

Anerkannt: wahr,
InsertDIDs:
'0': ObjectID ("63BC3F53A2E5D7C94C4DE66B"),
'1': ObjectID ("63BC3F53A2E5D7C94C4DE66C"),
'2': ObjectID ("63BC3F53A2E5D7C94C4DE66D"),
'3': ObjectID ("63BC3F53A2E5D7C94C4DE66E"),
'4': ObjectID ("63BC3F53A2E5D7C94C4DE66F")
'5': ObjectID ("63BCBF7552359FABFC4A770E")

Nachdem Sie insgesamt 6 Datensätze in der Erfassung der Datenbank „Daten“ der MongoDB -Test erfolgreich eingeführt haben, müssen Sie sich auch all diese Datensätze ansehen. Zu diesem Zweck müssen Sie jede der Datenerfassungsdatensätze im JSON -Format mit der Funktion foreach () anzeigen. Zu diesem Zweck sollten Sie alle Datensätze über die Funktion „Finden“ finden und dann die Funktion foreach () anwenden, wie in der folgenden Ausgabe angezeigt. Das Argument „Printjson“ ist hier ein Muss. Die Ausgabe für die Anzeige aller 6 Datensätze der Sammlung „Daten“ im JSON -Format ist unten beigefügt.

Test> db.Daten.finden().foreach (printjson)
_id: ObjectID ("63BC3F53A2E5D7C94C4DE66B"), Name: 'Peter', Alter: 24
_id: ObjectID ("63BC3F53A2E5D7C94C4DE66C"), Name: 'Ana', Alter: NULL
_id: ObjectID ("63BC3F53A2E5D7C94C4DE66D"), Name: 'Bryan', Alter: "
_id: ObjectID ("63BC3F53A2E5D7C94C4DE66E"), Name: 'Nina', Alter: 33
_id: objectId ("63bc3f53a2e5d7c94c4de66f"), Name: 'John'
_id: ObjectID ("63BCBF7552359FABFC4A770E"), Name: 'Michael', Alter: NULL

Wenden Sie den „IFNULL“ -Portler auf das Feld "Alter" der "Daten" -Kollektion an, da sie undefinierte und Nullwerte in Dokumenten enthält. Die Aggregate () -Funktion eines MongoDB sollte verwendet werden. Daher haben wir die Abfrage mit dem Namen einer Sammlung begonnen. Es folgt die Funktion „Aggregat“, die den Projektbetreiber enthält, um auf dem jeweiligen Bereich zu projizieren, auf dem der „Ifnull“ -Preiber angewendet wird. Das Feld "Name" ist auf 1 gesetzt, sodass es angezeigt werden kann. Der Operator „Ifnull“ enthält zwei Argumente als ["", ""], die auf das Feld "Alter" angewendet werden. Die Ausgabe dieser Abfrage zeigt das Alter: “, der Alterswerte durch nichts ersetzte. Dies liegt daran.

Test> db.Daten.Aggregate ([$ projekt: Name: 1, Alter: $ ifnull: ["", ""]])
[
_id: ObjectID ("63BCB7A552359FABFC4A7701"), Name: 'Peter', Alter: ",
_id: ObjectID ("63BCB7A552359FABFC4A7702"), Name: 'Ana', Alter: ",
_id: ObjectID ("63BCB7C352359FABFC4A7703"), Name: 'Bryan', Alter: ",
_id: ObjectID ("63BCB7C352359FABFC4A7704"), Name: 'Nina', Alter: ",
_id: ObjectID ("63BCB7D052359FABFC4A7705"), Name: 'John', Alter: ",
_id: ObjectID ("63BCBF7552359FABFC4A770E"), Name: 'Michael', Alter: "
]

Wenn Sie im ersten Argument des "IFnull" -Preibers einen String -Ausdruck verwenden, ersetzen Sie alle Werte eines "Altersfeldes" durch diese Zeichenfolge. In der unten gezeigten Ausgabe haben wir die Zeichenfolge „undefiniert“ verwendet und sie hat den Platz der ursprünglichen Werte im Alter aller Aufzeichnungen eingenommen.

Test> db.Daten.Aggregate ([$ projekt: Name: 1, Alter: $ ifnull: ["undefined", ""]])
[
_id: ObjectID ("63BCB7A552359FABFC4A7701"), Name: 'Peter', Alter: Undefined ',
_id: ObjectID ("63BCB7A552359FABFC4A7702"), Name: 'Ana', Alter: 'undefined',
_id: ObjectID ("63BCB7C352359FABFC4A7703"), Name: 'Bryan', Alter: 'undefined',
_id: ObjectID ("63BCB7C352359FABFC4A7704"), Name: 'Nina', Alter: 'undefined',
_id: ObjectID ("63BCB7D052359FABFC4A7705"), Name: 'John', Alter: 'undefined',
_id: ObjectID ("63BCBF7552359FABFC4A770E"), Name: 'Michael', Alter: 'undefined'
]

Um so etwas zu vermeiden, müssen wir das Feld „Alter“ als erstes Argument für den IFnull -Operator zusammen mit dem Schild „$“ verwenden. Dann lassen Sie das zweite Argument leer, ich.e., zweites Argument als Wert. Bei der Ausführung dieser Gesamtanweisung werden wir die unten angeschlossene Ausgabe anzeigen. Jetzt können Sie sehen, dass das Altersfeld seine ursprünglichen Werte angezeigt hat, bei denen es keinen Nullwert gibt. Auch wenn die Werte null oder undefiniert sind, wird das Altersfeld durch leer ersetzt. “.

Test> db.Daten.Aggregate ([$ Project: Name: 1, Alter: $ ifnull: ["$ age", ""]])
[
_id: ObjectID ("63BCB7A552359FABFC4A7701"), Name: 'Peter', Alter: 24,
_id: ObjectID ("63BCB7A552359FABFC4A7702"), Name: 'Ana', Alter: ",
_id: ObjectID ("63BCB7C352359FABFC4A7703"), Name: 'Bryan', Alter: ",
_id: ObjectID ("63BCB7C352359FABFC4A7704"), Name: 'Nina', Alter: 33,
_id: ObjectID ("63BCB7D052359FABFC4A7705"), Name: 'John', Alter: ",
_id: ObjectID ("63BCBF7552359FABFC4A770E"), Name: 'Michael', Alter: "
]

Schauen wir uns unterschiedliche Ausgangswerte für die Nullwerte des Feldes „Alter“ an, indem wir den IFNULL -Operator in der aggregierten Anweisung ansehen. Dieses Mal verwenden wir den String „Nullwert“ als zweites Argument für den IFNULL -Operator, um Nullwerte im Feld „Alter“ zu ersetzen. Das nachstehende Ergebnis zeigte den Austausch von Nullwerten durch die Zeichenfolge „Nullwert“ an.

Test> db.Daten.Aggregate ([$ projekt: Name: 1, Alter: $ ifnull: ["$ ay", "null value"]])
[
_id: ObjectID ("63BCB7A552359FABFC4A7701"), Name: 'Peter', Alter: 24,
_id: ObjectID ("63BCB7A552359FABFC4A7702"), Name: 'Ana', Alter: 'Null Value',
_id: ObjectID ("63BCB7C352359FABFC4A7703"), Name: 'Bryan', Alter: ",
_id: ObjectID ("63BCB7C352359FABFC4A7704"), Name: 'Nina', Alter: 33,
_id: ObjectID ("63BCB7D052359FABFC4A7705"), Name: 'John', Alter: 'Null Value',
_id: ObjectID ("63BCBF7552359FABFC4A770E"), Name: 'Michael', Alter: 'Null Value'
]

Abschluss

Dieser Artikel enthält eine Diskussion über die Verwendung des IFnull -Operators, der von seiner Einführung in die Endabbildung beginnt. Die Abbildungen zeigen, wie ein ursprünglicher „Null“ -Wert eines bestimmten Feldes durch einen neuen Wert ersetzt werden kann. Nachdem wir das gesamte Verfahren zur Verwendung des IFNULL -Operators in der MongoDB -Aggregat -Funktion erörtert haben, sind wir zu dem Ergebnis gekommen, dass das erste Argument des IFNULL -Operators ein Feldname mit einem „$“ -Scharakter sein sollte, um Komplikationen zu vermeiden.