Dokumentwerte mit der MongoDB-Shell drucken

Mehvish Ashiq 16 Februar 2024
  1. Dokumentwerte mit der MongoDB-Shell drucken
  2. Drucken Sie die Dokumentwerte für alle Dokumente in einer Sammlung
  3. Drucken Sie die Dokumentwerte nur für das erste Dokument
  4. Drucken Sie die Dokumentwerte für alle Dokumente mit benutzerdefinierten Eigenschaftsnamen
  5. Drucken Sie die Dokumentwerte basierend auf den angegebenen Bedingungen für alle Dokumente
Dokumentwerte mit der MongoDB-Shell drucken

Das Drucken des Wertes des Dokuments ist auch eine unglaubliche Fähigkeit, von der wir je nach den Anforderungen des Projekts profitieren können. Dieses Tutorial druckt die Dokumentwerte, anstatt das vollständige Dokument über die MongoDB-Shell zu drucken.

Dokumentwerte mit der MongoDB-Shell drucken

Das Drucken der Dokumente mit der Mongo-Shell ist sehr einfach, aber wie kann man die Werte und Eigenschaften drucken, anstatt das gesamte Dokument zu erhalten? Bevor wir uns mit den Details befassen, erstellen wir eine Sammlung mit dem Namen teachers, die die unten angegebenen JSON-Dokumente enthält.

Sammlung erstellen:

> db.createCollection('teachers')

Fügen Sie die JSON-Dokumente in die Sammlung Lehrer ein:

> db.teachers.insertMany(
  [
        {
            "first_name": "Mehvish",
            "last_name": "Ashiq",
            "gender": "Female",
            "grade": 18
        },
        {
            "first_name": "Tahir",
            "last_name": "Raza",
            "gender": "Male",
            "grade": 18
        },
        {
            "first_name": "Saira",
            "last_name": "Daniel",
            "gender": "Female",
            "grade": 20

        }
    ]

)

Alle Dokumente der Sammlung teachers anzeigen:

> db.teachers.find().pretty()

AUSGANG:

{
        "_id" : ObjectId("6290440e7c524c650b7a51c0"),
        "first_name" : "Mehvish",
        "last_name" : "Ashiq",
        "gender" : "Female",
        "grade" : 18
}
{
        "_id" : ObjectId("6290440e7c524c650b7a51c1"),
        "first_name" : "Tahir",
        "last_name" : "Raza",
        "gender" : "Male",
        "grade" : 18
}
{
        "_id" : ObjectId("6290440e7c524c650b7a51c2"),
        "first_name" : "Saira",
        "last_name" : "Daniel",
        "gender" : "Female",
        "grade" : 20
}

Sobald wir die Sammlung erstellt und mit Dokumenten gefüllt haben, können wir die Dokumentwerte je nach Projektanforderungen drucken. Einige der Szenarien sind unten aufgeführt:

  • Drucken Sie die Dokumentenwerte für alle Dokumente in einer Sammlung
  • Drucken Sie nur die Belegwerte für den ersten Beleg
  • Drucken Sie die Dokumentwerte für alle Dokumente mit benutzerdefinierten Eigenschaftsnamen
  • Drucken Sie die Dokumentwerte basierend auf den angegebenen Bedingungen für alle Dokumente

Drucken Sie die Dokumentwerte für alle Dokumente in einer Sammlung

Beispielcode:

> db.teachers.find().forEach(
    function (data) {
        Object.keys(data).forEach(
            function(key) {
                print(key + ': ' + data[key])
            }
        )
        print('\n')
    }
)

AUSGANG:

_id: 6290440e7c524c650b7a51c0
first_name: Mehvish
last_name: Ashiq
gender: Female
grade: 18

_id: 6290440e7c524c650b7a51c1
first_name: Tahir
last_name: Raza
gender: Male
grade: 18

_id: 6290440e7c524c650b7a51c2
first_name: Saira
last_name: Daniel
gender: Female
grade: 20

Dieser Beispielcode ruft alle JSON-Dokumente mit der Methode find() ab. Dann durchlaufen wir jedes Dokument mit der JavaScript-Schleife forEach() und übergeben jedes Dokument als data an eine anonyme Funktion.

In dieser Funktion verwenden wir Object.keys(data), um alle Schlüssel (auch Eigenschaften oder Feldnamen genannt) für dieses bestimmte Dokument abzurufen, das in der Variablen data enthalten ist.

Außerdem wird eine weitere forEach()-Methode verwendet, um über die Schlüssel des Dokuments (gespeichert in der data-Variable) zu iterieren und eine andere anonyme Funktion aufzurufen, um alle Schlüssel mit den entsprechenden Werten auszugeben.

Drucken Sie die Dokumentwerte nur für das erste Dokument

Beispielcode:

> let result = db.getCollection('teachers').findOne()
> for (var key in result) {
    if (result.hasOwnProperty(key)) {
        print(key + ': ' + result[key]);
    }
}

AUSGANG:

_id: 6290440e7c524c650b7a51c0
first_name: Mehvish
last_name: Ashiq
gender: Female
grade: 18

Für dieses Beispiel-Snippet verwenden wir die findOne()-Methode, um nur das erste Dokument aus der angegebenen Sammlung abzurufen und es im result-Objekt zu speichern.

Als nächstes verwenden wir die for-in-Schleife von JavaScript, um das result-Objekt zu durchlaufen und einen key zurückzugeben, um auf den Wert als result[key] zuzugreifen.

Bevor wir auf den Wert für den key zugreifen, prüfen wir mit der Methode hasOwnProperty(), ob das Objekt (in diesem Fall result) die angegebene Property besitzt.

Drucken Sie die Dokumentwerte für alle Dokumente mit benutzerdefinierten Eigenschaftsnamen

Beispielcode:

> db.teachers.find().forEach(
    function (document) {
        print("FirstName: " + document.first_name +"\n"+
              "LastName: " + document.last_name + "\n"+
              "Grade: " + document.grade)
        print("\n\n")
    }
)

AUSGANG:

FirstName: Mehvish
LastName: Ashiq
Grade: 18

FirstName: Tahir
LastName: Raza
Grade: 18

FirstName: Saira
LastName: Daniel
Grade: 20

Manchmal möchten wir die Eigenschaftsnamen nicht so erhalten, wie sie im Programm angegeben sind, sondern die benutzerdefinierten Eigenschaftsnamen verwenden. Wenn ja, ist diese Lösung für Sie.

Wir erhalten alle Dokumente in der Sammlung teachers mit der Methode find(). Iterieren Sie dann über jedes Dokument, um die Werte mithilfe von Schlüsseln (auch als Feld- oder Eigenschaftsnamen bezeichnet) abzurufen.

Sie haben vielleicht bemerkt, dass wir den Primärschlüssel mit dem Namen _id und seinen Wert für dieses Beispiel nicht erhalten. Das liegt daran, dass wir es nicht in der Anweisung print() angeben, aber es ist immer noch in der Variablen document vorhanden.

Verwenden Sie zur Überprüfung den folgenden Code.

Beispielcode:

db.teachers.find().forEach(
    function (document) {
        print(document._id)
        print("\n\n")
    }
)

AUSGANG:

ObjectId("6290440e7c524c650b7a51c0")

ObjectId("6290440e7c524c650b7a51c1")

ObjectId("6290440e7c524c650b7a51c2")

Sehen wir uns den folgenden Abschnitt an, um dies in der Mongo-Shell zu vermeiden.

Drucken Sie die Dokumentwerte basierend auf den angegebenen Bedingungen für alle Dokumente

Beispielcode:

> db.teachers.find({}, {"grade": 1, "_id":0}).forEach(
    function(property) {
        print(property.grade)
})

AUSGANG:

18
18
20

Hier müssen wir zuerst die Funktion find() verstehen, um den Beispielcode zu verstehen. Wir können die Methode find() auf verschiedene Arten verwenden, um die Anforderungen zu erfüllen; Einige Formate sind unten aufgeführt:

  • Verwenden Sie find() oder find({}), um alle Dokumente aus der angegebenen Sammlung zu erhalten
  • Verwenden Sie find({}, {"city": 1}), um die Eigenschaft city mit ihrem Wert für alle Dokumente abzurufen.
  • Verwenden Sie find({}, {"city": 1, "_id:0"}), um die Eigenschaft city und ihren Wert für alle Dokumente zu erhalten, zeigen Sie aber nicht die ObjectId an. Wenn Sie hier den Wert von _id auf 0 setzen (standardmäßig ist es 1), kann die ObjectId nicht gedruckt werden.

Auf ähnliche Weise verwenden wir die Methode find(), um die Eigenschaft grade und ihren Wert abzurufen, ohne das Feld _id anzuzeigen.

Wir verwenden jedoch die forEach()-Schleife für jeden Datensatz, um nur den an die anonyme Funktion übergebenen Eigenschaftswert zu drucken. Wir können den Code mit der Pfeilfunktion von JavaScript optimieren.

Beispielcode:

db.teachers.find({}, {"grade": 1, "_id":0}).forEach( property => print(property.grade))

AUSGANG:

18
18
20
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Verwandter Artikel - MongoDB Print