← К оглавлению занятия

📖 Теория

📁 Блок: 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 применяется в проекции, когда нужно вернуть только часть массива внутри документа.