MongoDB kombinuje podmínky dotazu pomocí logických operátorů — $and, $or, $not, $nor — plus implicitní AND více polí v filtru. Ty vám umožňují vyjádřit komplexní logiku dotazu, abyste našli přesně ty dokumenty, které potřebujete.
MongoDB kombinuje podmínky dotazu pomocí logických operátorů — $and, $or, $not, $nor — plus implicitní AND více polí v filtru. Ty vám umožňují vyjádřit komplexní logiku dotazu, abyste našli přesně ty dokumenty, které potřebujete.
// multiple fields in one filter = AND (all must match)
db.users.find({ active: true, age: { $gt: 18 } });
// → active = true AND age > 18 (no explicit $and needed)
Nejjednodušší případ: uvedení více podmínek v filtru je implicitně AND — všechny musí odpovídat.
// $or takes an array of conditions; a document matches if ANY is true
db.users.find({
$or: [
{ age: { $lt: 18 } },
{ age: { $gt: 65 } }
]
});
// → age < 18 OR age > 65
// usually implicit, but $and is needed when combining conditions on the SAME field
db.products.find({
$and: [
{ price: { $gt: 100 } },
{ price: { $lt: 500 } }
]
});
// (often you can write { price: { $gt: 100, $lt: 500 } } instead — cleaner)
// $and is also useful to combine $or groups:
db.users.find({
$and: [
{ $or: [{ role: "admin" }, { role: "editor" }] },
{ active: true }
]
});
db.products.find({ price: { $not: { $gt: 100 } } }); // NOT (price > 100) → price <= 100 or missing
db.users.find({ $nor: [{ active: true }, { premium: true }] }); // NEITHER condition true
// real queries combine logical + comparison operators
db.orders.find({
status: "shipped", // implicit AND
$or: [
{ total: { $gt: 1000 } },
{ priority: "high" }
]
});
// → status = shipped AND (total > 1000 OR priority = high)
Logické operátory jsou nezbytné pro vyjádření komplexních podmínek dotazu v MongoDB — skutečné dotazy často potřebují více než jednu podmínku (kombinování více kritérií s logikou AND/OR), takže jejich pochopení je základní každodenní znalostí pro efektivní filtrování dat.
Znalost implicitního AND více polí v filtru (nejjednodušší, nejčastější případ — uvedení podmínek, které se všechny musí shodovat), $or (vyhovění libovolné z několika podmínek — časté potřeba alternativ), $and (explicitní AND, potřebný pro kombinování podmínek na stejném poli nebo seskupování $or klauzulí) a $not/$nor (negace) pokrývá logické stavební prvky pro vyjádření požadavků na dotazy.
Pochopení jak kombinovat logické a operátory porovnání (vytváření dotazů jako "status shipped AND (total > 1000 OR priority high)") je nezbytné pro realistické dotazy s více podmínkami.
Protože filtrování dat s kombinovanými podmínkami je běžná potřeba (nalezení dokumentů odpovídajících složitým kritériím) a protože logické operátory MongoDB (implicitní AND, $or, $and, $not/$nor) jsou způsob, jak tuto logiku vyjádřit — v kombinaci s operátory porovnání pro skutečné podmínky — pochopení logických operátorů je nezbytné, často aplikované znalosti MongoDB pro psaní efektivních dotazů, ekvivalent zvládnutí AND/OR/NOT v klauzulích SQL WHERE a nezbytné pro nalezení přesně těch dokumentů, které potřebujete, s často složitými podmínkami, které vyžadují skutečné aplikace.