Практические примеры запросов
Реальные сценарии запросов на поиск минимального и максимального значений
Настройка базы данных
mongo
use labex_examples
1. Запросы для электронной коммерции (e-commerce) по продуктам
Поиск диапазонов цен
db.products.aggregate([
{
$group: {
_id: "$category",
cheapestProduct: { $min: "$price" },
mostExpensiveProduct: { $max: "$price" }
}
}
]);
2. Анализ зарплат сотрудников
Информация о зарплатах по отделам
db.employees.aggregate([
{
$group: {
_id: "$department",
lowestSalary: { $min: "$salary" },
highestSalary: { $max: "$salary" },
salaryRange: {
$subtract: [{ $max: "$salary" }, { $min: "$salary" }]
}
}
}
]);
3. Запросы на основе времени
Отслеживание активности пользователей
db.userLogs.aggregate([
{
$group: {
_id: "$userId",
firstLogin: { $min: "$timestamp" },
lastLogin: { $max: "$timestamp" }
}
}
]);
Диаграмма потока стратегии запросов
graph TD
A[Input Collection] --> B{Select Grouping Field}
B --> C[Apply Min/Max Operators]
C --> D[Process Results]
D --> E[Analyze Data]
Вопросы производительности
Техника |
Влияние |
Рекомендация |
Индексация (Indexing) |
Высокое |
Создавайте индексы на полях запросов |
Ограничение результатов (Limit Results) |
Среднее |
Используйте этап $limit |
Проекция (Projection) |
Низкое |
Выбирайте только необходимые поля |
Продвинутый фильтрация
Условный поиск минимального и максимального значений
db.sales.aggregate([
{ $match: { region: "North" } },
{
$group: {
_id: "$product",
maxSale: { $max: "$amount" }
}
}
]);
Лучшие практики
- Используйте соответствующие индексы
- Минимизируйте обработку данных
- Разбивайте сложные запросы на этапы
Powered by LabEx, mastering MongoDB query techniques.