MongoDB kombinerar frågvillkor med hjälp av logiska operatorer — $and, $or, $not, $nor — plus implicit AND för flera fält i ett filter. Dessa låter dig uttrycka komplex fråglogik för att hitta exakt de dokument du behöver.
MongoDB kombinerar frågvillkor med hjälp av logiska operatorer — $and, $or, $not, $nor — plus implicit AND för flera fält i ett filter. Dessa låter dig uttrycka komplex fråglogik för att hitta exakt de dokument du behöver.
// 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)
Den enklaste varianten: att lista flera villkor i ett filter AND:ar dem implicit — alla måste matcha.
// $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)
Logiska operatorer är väsentliga för att uttrycka komplexa frågvillkor i MongoDB — verkliga frågor behöver ofta mer än ett enda villkor (kombinera flera kriterier med AND/OR-logik), så att förstå dem är fundamental kunskap i vardagen för att filtrera data effektivt.
Att känna till den implicita AND för flera filterfält (det enklaste, vanligaste fallet — lista villkor som alla måste matcha), $or (matcha vilket som helst av flera villkor — ett vanligt behov för alternativ), $and (explicit AND, behövs för att kombinera villkor på samma fält eller gruppera $or-satser), och $not/$nor (negation) täcker de logiska byggstenar som behövs för att uttrycka frågevillkor.
Att förstå hur man kombinerar logiska och jämförelseoperatorer (bygga frågor som "status levererad AND (totalt > 1000 OR prioritet hög)") är nödvändigt för de realistiska, flerkriteria-frågor som applikationer kräver.
Eftersom filtrering av data med kombinerade villkor är ett vanligt behov (hitta dokument som matchar komplexa villkor), och eftersom MongoDBs logiska operatorer (implicit AND, $or, $and, $not/$nor) är hur du uttrycker denna logik — tillsammans med jämförelseoperatorer för själva villkoren — är förståelsen för logiska operatorer väsentlig, ofta använd MongoDBkunskap för att skriva effektiva frågor, motsvarelsen till att behärska AND/OR/NOT i SQL WHERE-satser, och nödvändig för att hitta exakt de dokument du behöver med de ofta komplexa villkor som verkliga applikationer kräver.