MongoDB kombinira uvjete upita koristeći logičke operatore — $and, $or, $not, $nor — plus implicitni AND više polja u filtru. Oni vam omogućuju da izrazite složenu logiku upita kako biste pronašli točno dokumente koje trebate.
MongoDB kombinira uvjete upita koristeći logičke operatore — $and, $or, $not, $nor — plus implicitni AND više polja u filtru. Oni vam omogućuju da izrazite složenu logiku upita kako biste pronašli točno dokumente koje trebate.
// 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)
Najjednostavniji slučaj: navođenje više uvjeta u filtru implicitno ih povezuje s AND — svi moraju biti zadovoljeni.
// $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)
Logički operatori su bitni za izražavanje složenih uvjeta upita u MongoDBu — pravi upiti često trebaju više od jednog uvjeta (kombiniranje više kriterija s AND/OR logikom), pa je razumijevanje njih osnovna svakodnevna znanja za učinkovito filtriranje podataka.
Znanje o implicitnom AND-u više polja filtera (najjednostavniji, najčešće korišten slučaj — navođenje uvjeta koji svi moraju biti zadovoljeni), $or (prihvaćanje bilo kojeg od nekoliko uvjeta — česta potreba za alternativama), $and (eksplicitni AND, potreban za kombiniranje uvjeta na istom polju ili grupiranje $or klauzula), te $not/$nor (negacija) pokriva logičke gradivne blokove za izražavanje zahtjeva upita.
Razumijevanje kako kombinirati logičke i operatore usporedbe (izgradnja upita kao "status dostavljeno I (ukupno > 1000 ILI prioritet visok)") je nužno za realistične, višeuvjetne upite koje aplikacije zahtijevaju.
Budući da je filtriranje podataka s kombiniranim uvjetima česta potreba (pronalaženje dokumenata koji zadovoljavaju složene kriterije), a budući da su logički operatori MongoDBa (implicitni AND, $or, $and, $not/$nor) način kako izrazite tu logiku — kombinirano s operatorima usporedbe za stvarne uvjete — razumijevanje logičkih operatora je bitno, često primjenjeno znanje MongoDBa za pisanje učinkovitih upita, ekvivalent savladavanju AND/OR/NOT u SQL WHERE klauzulama, i nužno je za pronalaženje točno onih dokumenata koje trebate s često složenim uvjetima koje prave aplikacije zahtijevaju.