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.