Dokumentwerte mit der MongoDB-Shell drucken
- Dokumentwerte mit der MongoDB-Shell drucken
- Drucken Sie die Dokumentwerte für alle Dokumente in einer Sammlung
- Drucken Sie die Dokumentwerte nur für das erste Dokument
- Drucken Sie die Dokumentwerte für alle Dokumente mit benutzerdefinierten Eigenschaftsnamen
- Drucken Sie die Dokumentwerte basierend auf den angegebenen Bedingungen für alle Dokumente
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()
oderfind({})
, um alle Dokumente aus der angegebenen Sammlung zu erhalten - Verwenden Sie
find({}, {"city": 1})
, um die Eigenschaftcity
mit ihrem Wert für alle Dokumente abzurufen. - Verwenden Sie
find({}, {"city": 1, "_id:0"})
, um die Eigenschaftcity
und ihren Wert für alle Dokumente zu erhalten, zeigen Sie aber nicht dieObjectId
an. Wenn Sie hier den Wert von_id
auf0
setzen (standardmäßig ist es1
), kann dieObjectId
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