MongoDB объединяет условия запроса, используя логические операторы — $and, $or, $not, $nor — а также неявное AND нескольких полей в фильтре. Они позволяют выражать сложную логику запроса для поиска ровно тех документов, которые вам нужны.
MongoDB объединяет условия запроса, используя логические операторы — $and, $or, $not, $nor — а также неявное AND нескольких полей в фильтре. Они позволяют выражать сложную логику запроса для поиска ровно тех документов, которые вам нужны.
// 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)
Простейший случай: указание нескольких условий в фильтре неявно объединяет их с помощью AND — оба/все условия должны совпадать.
// $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)
Логические операторы необходимы для выражения сложных условий запроса в MongoDB — реальные запросы часто требуют больше одного условия (объединение нескольких критериев логикой AND/OR), поэтому их понимание является фундаментальными ежедневными знаниями для эффективной фильтрации данных.
Знание неявного AND нескольких полей фильтра (простейший, наиболее распространённый случай — указание условий, которые все должны совпадать), $or (совпадение с любым из нескольких условий — частая необходимость для альтернатив), $and (явное AND, необходимое для объединения условий на одном поле или группировки предложений $or) и $not/$nor (отрицание) охватывает логические строительные блоки для выражения требований запроса.
Понимание того, как комбинировать логические и операторы сравнения (построение запросов типа "status доставлен AND (total > 1000 OR priority высокий)") необходимо для реалистичных многоусловных запросов, которые требуют приложения.
Поскольку фильтрация данных по объединённым условиям — частая необходимость (поиск документов, соответствующих сложным критериям), и поскольку логические операторы MongoDB (неявное AND, $or, $and, $not/$nor) — это способ выражения этой логики в сочетании с операторами сравнения для самих условий — понимание логических операторов является необходимым, часто применяемым знанием MongoDB для написания эффективных запросов, эквивалентом овладения AND/OR/NOT в SQL-предложениях WHERE и необходимо для поиска ровно тех документов, которые вам нужны, с часто сложными условиями, которые требуют реальные приложения.