Dieses Kapitel führt durch die MongoDB-Grundabfragesyntax ein, die durch die Mongo-Shell verwendet wird. In der Mongo-Shell wird die Methode db.collection.find()
verwendet, um Daten abzufragen.
Vorbereiten von Testdaten
Füge einige Daten in die Bestandssammlung ein.
db.inventory.insertMany([
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
Alle Dokumente abfragen
Alle Dokumente in der Bestandssammlung abfragen, {} stellt eine leere Abfragebedingung dar.
db.inventory.find( {} )
Ähnlich wie die folgende SQL-Anweisung:
SELECT * FROM inventory
Abfragebedingungen für Gleichheit
Syntax:
{ Feld: Wert, ... }
Beispiel 1:
db.inventory.find( { status: "D" } )
Ähnlich wie die folgende SQL-Anweisung:
SELECT * FROM inventory WHERE status = "D"
Beispiel 2: Abfrage von verschachtelten Feldern, Verwendung eines Punktes (.) zur Verknüpfung von Feldern verschachtelter Dokumente.
db.inventory.find( { "size.uom": "in" } )
Ähnlich wie die folgende SQL-Anweisung:
SELECT * FROM inventory WHERE size.uom = "in"
Hinweis: MongoDB-Dokumente werden im JSON-Format gespeichert und unterstützen daher die Verwendung von verschachtelten Feldern als Abfragebedingungen.
Verwendung von Abfrageoperatoren
MongoDB unterstützt verschiedene Abfrageoperatoren zur Durchführung verschiedener komplexer Abfragen. Syntax:
{ <Feld1>: { <Operator1>: <Wert1> }, ... }
Erklärung:
- Feld1: Feldname
- Operator1: Operator
- Wert1: Operatorparameter
Beispiel des $in-Operators:
db.inventory.find( { status: { $in: [ "A", "D" ] } } )
Ähnlich wie die folgende SQL-Abfrage mit dem "in"-Operator:
SELECT * FROM inventory WHERE status in ("A", "D")
Hinweis: Für Details zu den Operatoren lesen Sie bitte den nachfolgenden Abschnitt zu MongoDB-Abfragedetails.
Bedingung "und"
Ähnlich wie in SQL unterstützt MongoDB auch die Bedingung "und".
Beispiel:
// Geben Sie mehrere Bedingungen hintereinander ein und verknüpfen Sie die Bedingungen mit "und"
db.inventory.find( { status: "A", item: "postcard"} )
Ähnlich wie die folgende SQL-Anweisung:
SELECT * FROM inventory WHERE status = "A" AND item = "postcard"
Bedingung "oder"
Ähnlich wie in SQL unterstützt MongoDB auch die Bedingung "oder", die durch den $or-Operator implementiert wird.
Syntax:
{
$or: [
{Bedingung1},
{Bedingung2},
.....
]
}
Beispiel:
db.inventory.find( { $or: [ { status: "A" }, { item: "postcard"} ] } )
Ähnlich wie die folgende SQL-Anweisung:
SELECT * FROM inventory WHERE status = "A" OR item = "postcard"
Kombinieren von "und" und "oder" Bedingungen
Ähnlich wie in SQL kann MongoDB komplexe Abfragebedingungen mittels "und" und "oder" kombinieren.
Beispiel:
db.inventory.find( {
status: "A",
$or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )
Hier werden der $lt-Operator für "kleiner als" und die reguläre Ausdrucksübereinstimmung verwendet.
Dies ist ähnlich wie die folgende SQL-Anweisung:
SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 or item like 'p%')
Tipp: Für eine detaillierte Erklärung von MongoDB-Abfragebedingungen lesen Sie bitte die nachfolgenden Kapitel.