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

✅ Решения

📁 Блок: 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 в неправильной логике задачи.

Решения и разбор шагов

1

age >= 30

db.US_Adult_Income.find({ age: { $gte: 30 } })

$gte включает границу.

2

age < 30

db.US_Adult_Income.find({ age: { $lt: 30 } })

$lt исключает 30.

3

age 22 или 32

db.US_Adult_Income.find({ age: { $in: [22, 32] } })

Список точных значений оформляется массивом.

4

CustomerID не ANTON

db.customers.find({ CustomerID: { $not: { $eq: "ANTON" } } })

Сохраняет форму из источника.

5

Подсчёт

db.customers.countDocuments({ CustomerID: { $not: { $eq: "ANTON" } } })

countDocuments получает тот же фильтр.

6

Диапазон

db.US_Adult_Income.find({ age: { $gte: 22, $lte: 30 } })

Короткая форма проще, когда оба условия относятся к одному полю.