Ось кілька наборів даних, які ви можете використовувати для практики запитів агрегації в MongoDB. Я включу тестові набори даних та рекомендації щодо реальних наборів, які можна завантажити.

1. Набір даних "Фільми"

Ви можете використовувати набір даних sample_mflix.movies з MongoDB Atlas або створити власний тестовий набір.

Приклад набору даних:

[  
{  
"title": "Inception",  
"year": 2010,  
"genres": ["Action", "Sci-Fi", "Thriller"],  
"imdb": { "rating": 8.8, "votes": 2000000 },  
"cast": ["Leonardo DiCaprio", "Joseph Gordon-Levitt"],  
"boxOffice": 836800000  
},  
{  
"title": "The Dark Knight",  
"year": 2008,  
"genres": ["Action", "Crime", "Drama"],  
"imdb": { "rating": 9.0, "votes": 2300000 },  
"cast": ["Christian Bale", "Heath Ledger"],  
"boxOffice": 1004558444  
},  
{  
"title": "Interstellar",  
"year": 2014,  
"genres": ["Adventure", "Drama", "Sci-Fi"],  
"imdb": { "rating": 8.6, "votes": 1500000 },  
"cast": ["Matthew McConaughey", "Anne Hathaway"],  
"boxOffice": 701729206  
}  
]

2. Набір даних "Продажі"

Ви можете практикуватися з набором даних, який містить інформацію про транзакції продажів.

Приклад набору даних:

[  
{  
"orderId": 101,  
"customerId": 1,  
"date": "2025–01–15",  
"items": [  
{ "product": "Laptop", "quantity": 1, "price": 800 },  
{ "product": "Mouse", "quantity": 2, "price": 20 }  
],  
"totalAmount": 840,  
"status": "completed"  
},  
{  
"orderId": 102,  
"customerId": 2,  
"date": "2025–01–17",  
"items": [  
{ "product": "Phone", "quantity": 1, "price": 500 },  
{ "product": "Charger", "quantity": 1, "price": 25 }  
],  
"totalAmount": 525,  
"status": "completed"  
},  
{  
"orderId": 103,  
"customerId": 1,  
"date": "2025–01–20",  
"items": [  
{ "product": "Tablet", "quantity": 1, "price": 300 }  
],  
"totalAmount": 300,  
"status": "pending"  
}  
]

3. Набір даних "Студенти"

Цей набір даних ідеально підходить для практики запитів, пов'язаних з освітою чи іспитами.

Приклад набору даних:

[  
{  
"studentId": 1,  
"name": "John Doe",  
"age": 20,  
"subjects": [  
{ "name": "Math", "score": 85 },  
{ "name": "English", "score": 78 }  
],  
"attendance": 90  
},  
{  
"studentId": 2,  
"name": "Jane Smith",  
"age": 21,  
"subjects": [  
{ "name": "Math", "score": 92 },  
{ "name": "English", "score": 88 }  
],  
"attendance": 95  
},  
{  
"studentId": 3,  
"name": "Alice Johnson",  
"age": 19,  
"subjects": [  
{ "name": "Math", "score": 76 },  
{ "name": "English", "score": 65 }  
],  
"attendance": 85  
}  
]

4. Набір даних "Продукти електронної комерції"

Тестовий набір даних про інвентаризацію продуктів для практики запитів, пов’язаних із товарами.

Приклад набору даних:

[  
{  
"productId": "P001",  
"name": "Wireless Keyboard",  
"category": "Electronics",  
"price": 25,  
"stock": 150,  
"ratings": [4, 5, 3, 4]  
},  
{  
"productId": "P002",  
"name": "Office Chair",  
"category": "Furniture",  
"price": 120,  
"stock": 50,  
"ratings": [5, 4, 5, 4]  
},  
{  
"productId": "P003",  
"name": "Water Bottle",  
"category": "Kitchen",  
"price": 10,  
"stock": 300,  
"ratings": [3, 4, 4, 5]  
}  
]

5. Реальні набори даних

Ви можете завантажити безкоштовні набори даних онлайн для практики.

Ресурси:

  1. MongoDB Atlas Sample Data
  1. Kaggle
  1. Data.gov
  1. Open Data Portal

1. Набір даних "Фільми"

Питання:

  1. Знайти середній рейтинг IMDb усіх фільмів.
  • Використовуйте $group і $avg.
  1. Знайти 3 фільми з найвищими касовими зборами.
  • Використовуйте $sort і $limit.
  1. Отримати загальну кількість фільмів за жанром.
  • Використовуйте $unwind і $group.
  1. Знайти фільм з найбільшою кількістю голосів на IMDb.
  • Використовуйте $sort і $limit.
  1. Отримати загальний касовий збір фільмів, випущених після 2010 року.
  • Використовуйте $match і $group.

1.

Перелік усіх унікальних жанрів, що є в наборі даних.

  • Використовуйте $unwind та $group.

Знайти середній рейтинг IMDb для кожного жанру.

  • Використовуйте $unwind, $group та $avg.

Знайти 2 найкращі фільми з найвищим рейтингом IMDb, згруповані за жанром.

  • Використовуйте $unwind, $sort, $group та $limit.

Обчислити загальну кількість акторів у всіх фільмах.

  • Використовуйте $project та $size.

Набір даних "Продажі"

Питання:

  1. Знайти загальну суму продажів для кожного клієнта.
  • Використовуйте $group.
  1. Отримати загальну кількість проданих одиниць кожного продукту.
  • Використовуйте $unwind та $group.
  1. Знайти 2 клієнтів, які витратили найбільше.
  • Використовуйте $group, $sort та $limit.
  1. Отримати загальну кількість замовлень зі статусом "completed".
  • Використовуйте $match та $count.
  1. Обчислити середню суму замовлення серед усіх замовлень.
  • Використовуйте $group та $avg.
  1. Перелічити продукти, які були продані більше ніж в одному замовленні.
  • Використовуйте $unwind, $group та $match.
  1. Знайти загальний дохід, отриманий у конкретну дату (наприклад, 2025-01-15).
  • Використовуйте $match та $group.
  1. Обчислити загальний дохід, отриманий за кожен день.
  • Використовуйте $group з $dateToString.
  1. Перелічити унікальні продукти, продані у всіх замовленнях.
  • Використовуйте $unwind та $group.

Набір даних "Студенти"

Питання:

  1. Знайти середній бал з кожного предмета серед усіх студентів.
  • Використовуйте $unwind та $group.
  1. Отримати найкращого студента з предмету "Math".
  • Використовуйте $unwind, $match, $sort та $limit.
  1. Знайти загальну відвідуваність усіх студентів.
  • Використовуйте $group.
  1. Перелічити студентів, які набрали більше 80 балів з будь-якого предмета.
  • Використовуйте $unwind та $match.
  1. Обчислити середній відсоток відвідуваності серед усіх студентів.
  • Використовуйте $group та $avg.
  1. Отримати загальну кількість предметів, на які записаний кожен студент.
  • Використовуйте $project та $size.
  1. Знайти студентів, які отримали менше 70 балів з предмета "English".
  • Використовуйте $unwind, $match.
  1. Групувати студентів за їх відвідуваністю (наприклад, >90%, 80–90%, <80%).
  • Використовуйте $bucket.
  1. Знайти студента з найвищим загальним балом за всіма предметами.
  • Використовуйте $unwind, $group та $sort.

Набір даних "Продукти електронної комерції"

Питання:

  1. Знайти середній рейтинг кожного продукту.
  • Використовуйте $project та $avg.
  1. Перелічити 2 продукти з найбільшим запасом.
  • Використовуйте $sort та $limit.
  1. Отримати загальну кількість запасу всіх продуктів у кожній категорії.
  • Використовуйте $group.
  1. Знайти продукти із середнім рейтингом більше 4.
  • Використовуйте $project та $match.
  1. Обчислити загальний дохід, якщо весь запас кожного продукту буде проданий.
  • Використовуйте $project з $multiply.
  1. Знайти категорію з найбільшим загальним запасом.
  • Використовуйте $group, $sum та $sort.
  1. Перелічити продукти, які мають рейтинги від щонайменше 3 користувачів.
  • Використовуйте $project та $filter.
  1. Знайти найдорожчий продукт у кожній категорії.
  • Використовуйте $group та $sort.
  1. Обчислити загальний дохід від усіх продуктів.
  • Використовуйте $group.

Перекладено з: Here are a few datasets you can use to practice MongoDB aggregation queries. I’ll include mock datasets and suggestions for real-world datasets you can download.

Leave a Reply

Your email address will not be published. Required fields are marked *