Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задания

Подготовка

  1. Создайте базу данных shop.
  2. Используя insertMany, вставьте в коллекцию products данные из файла products.json. Можете просто скопировать и вставить массив в команду db.products.insertMany(...) в Shell.
docker cp products.json mng:/products.json
docker exec -it mng mongoimport --db shop --collection products --file /products.json --jsonArray -u root -p password123 --authenticationDatabase admin

init

Часть 1 (Средний уровень)

Create: Добавьте новый товар: "USB-C Hub" от "TechCorp" ценой 45, категория "accessories", в наличии, 300 штук на складе.

use shop
db.products.insertOne({
  name: "USB-C Hub",
  brand: "TechCorp",
  price: 45,
  category: "accessories",
  tags: ["usb-c", "hub"],
  in_stock: true,
  stock_count: 300
})

task1.1

Read

Найдите все товары бренда "TechCorp"

db.products.find({ brand: "TechCorp" })

task1.2.1

Найдите все товары, цена которых меньше или равна 100

db.products.find({ price: { $lte: 100 } })

task1.2.2

Найдите все товары из категории "peripherals", которых нет в наличии (in_stock: false). Верните только их названия и бренды (name, brand)

db.products.find(
  { category: "peripherals", in_stock: false },
  { name: 1, brand: 1, \_id: 0 }
)

task1.2.3

Update

Бренд "GamerGear" провел ребрендинг и теперь называется "GamerPro". Обновите все товары этого бренда

db.products.updateMany(
  { brand: "GamerGear" },
  { $set: { brand: "GamerPro" } }
)

task1.3.1.1 task1.3.1.2

На "Laptop Pro" объявлена распродажа. Уменьшите его цену на 100 с помощью оператора $inc

db.products.updateOne(
  { name: "Laptop Pro" },
  { $inc: { price: -100 } }
)

task1.3.2.1 task1.3.2.2

Delete

"Webcam HD" оказался бракованным. Удалите этот товар из базы.

db.products.deleteOne({ name: "Webcam HD" })

task1.4.1 task1.4.2

Часть 2 (Продвинутый уровень)

Read (сложный фильтр): Найдите все товары, которые не относятся к бренду "TechCorp" и цена которых находится в диапазоне от 70 до 500 (включительно)

db.products.find({
  brand: { $ne: "TechCorp" },
  price: { $gte: 70, $lte: 500 },
});

task2.1

Update (работа с массивами): Добавьте тег "best-seller" всем товарам, у которых на складе (stock_count) более 100 единиц. Используйте updateMany и оператор $push

db.products.updateMany(
  { stock_count: { $gt: 100 } },
  { $push: { tags: "best-seller" } },
);

task2.2.1 task2.2.2

Update (условное обновление): Найдите "4K Monitor". Используя updateOne с опцией { upsert: true }, попробуйте обновить несуществующий товар, например, "8K Monitor". Убедитесь, что новый документ был создан

  • db.products.updateOne({ name: "8K Monitor" }, { $set: { price: 2000, brand: "ViewSonic" } }, { upsert: true })
db.products.updateOne(
  { name: "8K Monitor" },
  { $set: { price: 2000, brand: "ViewSonic" } },
  { upsert: true }
)

task2.3.1 task2.3.2 task2.3.3

Delete (с осторожностью): Создайте новую коллекцию test_delete и вставьте в нее 5 любых документов. Затем удалите из нее все документы одной командой.

db.test_delete.insertMany([
  { name: "A" },
  { name: "B" },
  { name: "C" },
  { name: "D" },
  { name: "E" },
]);

task2.4.1

db.test_delete.deleteMany({});

task2.4.2 task2.4.3

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors