📁 Блок: MongoDB / mongosh / Выборки⏱️ Время изучения: ~90 мин🎯 Сложность: Средняя
⚡ Кратко: суть занятия
Занятие 58 переносит фильтры из Compass в mongosh.
Базовая команда выборки — db.collection.find(), а условие передаётся первым аргументом.
Операторы сравнения: $eq, $ne, $gt, $gte, $lt, $lte и $in.
Логические операторы: $and, $or, $nor и $not.
Диапазон можно записать через $and или короче в одном объекте поля: { age: { $gte: 22, $lte: 30 } }.
countDocuments() считает документы по фильтру.
limit(), skip() и sort() управляют размером страницы, пропуском документов и порядком результата.
Топ-3 ошибки: пропустить точку в цепочке find().skip(), использовать $not вместо простого $ne без причины, сортировать после limit в неправильной логике задачи.
Теория по источнику
find() в mongosh
Команда db.customers.find() извлекает документы из коллекции customers.
Если нужен не весь набор, условие передают внутрь find(): db.customers.find({ City: "Berlin" }).
Первый аргумент find() — фильтр; второй аргумент может использоваться для проекции полей.
Операторы сравнения
$eq проверяет равенство, $ne — неравенство, $gt/$gte — больше и больше либо равно, $lt/$lte — меньше и меньше либо равно.
$in выбирает документы, где значение поля совпадает с одним из элементов массива.
Для отрицания в источнике показан вариант с $not и $eq; в простых случаях $ne короче, но урок сохраняет пример источника.
Логические операторы
$and требует выполнения обоих условий, $or — хотя бы одного.
$nor возвращает документы, где ни одно условие не выполняется.
$not инвертирует конкретное условие поля.
Пагинация и сортировка
limit(n) ограничивает число документов, skip(n) пропускает n документов.
sort({ field: 1 }) сортирует по возрастанию, sort({ field: -1 }) — по убыванию.
$slice применяется в проекции, когда нужно вернуть только часть массива внутри документа.