Ten rozdział przedstawia podstawową składnię zapytań w MongoDB za pomocą powłoki mongo. W powłoce mongo, do zapytania danych używa się metody db.collection.find().

Przygotowanie danych testowych

Wstaw kilka danych do kolekcji inventory.

db.inventory.insertMany([
   { item: "dziennik", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notatnik", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "papier", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "kalendarz", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "pocztówka", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

Zapytanie o wszystkie dokumenty

Zapytaj o wszystkie dokumenty w kolekcji inventory, {} reprezentuje pusty warunek zapytania.

db.inventory.find( {} )

Podobne do następującego polecenia SQL:

SELECT * FROM inventory

Warunki zapytań równości

Składnia:

{ pole: wartość, ... }

Przykład 1:

db.inventory.find( { status: "D" } )

Podobne do następującego polecenia SQL:

SELECT * FROM inventory WHERE status = "D"

Przykład 2: Zapytanie zagnieżdżonego pola, użyj kropki (.) do połączenia pól zagnieżdżonych dokumentów.

db.inventory.find( { "size.uom": "in" } )

Podobne do następującego polecenia SQL:

SELECT * FROM inventory WHERE size.uom = "in"

Uwaga: Dokumenty MongoDB są przechowywane w formacie JSON, więc obsługują używanie zagnieżdżonych pól jako warunków zapytań.

Użycie operatorów zapytań

MongoDB obsługuje różnorodne operatory zapytań do implementacji różnorodnych złożonych zapytań. Składnia:

{ <pole1>: { <operator1>: <wartość1> }, ... }

Wyjaśnienie:

  • pole1: nazwa pola
  • operator1: operator
  • wartość1: parametr operatora

Przykład operatora $in:

db.inventory.find( { status: { $in: [ "A", "D" ] } } )

Podobne do następującego zapytania SQL z operatorem "in":

SELECT * FROM inventory WHERE status in ("A", "D")

Uwaga: Aby uzyskać szczegółowe informacje na temat operatorów, proszę odnieść się do kolejnego rozdziału dotyczącego szczegółów zapytań MongoDB.

Warunek "i"

Podobnie jak w SQL, MongoDB również obsługuje warunek "i".

Przykład:

// Wprowadź wiele warunków kolejno i połącz warunki za pomocą "i"
db.inventory.find( { status: "A", item: "pocztówka"} )

Podobne do następującego polecenia SQL:

SELECT * FROM inventory WHERE status = "A" AND item = "pocztówka"

Warunek "lub"

Podobnie jak w SQL, MongoDB również obsługuje warunek "lub", który jest realizowany za pomocą operatora $or.

Składnia:

{
	$or: [
		{warunek1},
		{warunek2},
		.....
	]
}

Przykład:

db.inventory.find( { $or: [ { status: "A" }, { item: "pocztówka"} ] } )

Podobne do następującego polecenia SQL:

SELECT * FROM inventory WHERE status = "A" OR item = "pocztówka"

Łączenie warunków "i" i "lub"

Podobnie jak w SQL, MongoDB może łączyć złożone warunki zapytań za pomocą "i" i "lub".

Przykład:

db.inventory.find( {
     status: "A",
     $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )

Tutaj użyto operatora $lt do porównania mniejsze niż oraz dopasowania wyrażeń regularnych.

Jest podobne do następującego polecenia SQL:

SELECT * FROM inventory WHERE status = "A" AND ( qty  < 30 or item like 'p%')

Wskazówka: Aby uzyskać szczegółowe wyjaśnienie warunków zapytań MongoDB, proszę odnieść się do kolejnych rozdziałów.