Similar presentations:
Лекция5
1.
Знакомство с MongoDBНастройка MongoDB и запуск в консоли
Установка и администрирование БД
Селекторы
Модификаторы обновления
Сортировка
2.
Знакомство с MongoDBMongoDB – документ-ориентированная система
управления базами данных (СУБД) с открытым
исходным кодом, не требующая описания схемы
таблиц.
Официальный сайт: mongodb.org
3.
Знакомство с MongoDB4.
Знакомство с MongoDBУправляет наборами JSON-подобных документов,
хранимых в двоичном виде в формате BSON:
{key1: value1, key2: value2}
Имеется подробная и качественная
документация, большое число примеров и
драйверов под популярные языки Java, JavaScript,
Node.js, C++, C#, PHP, Python, Perl, Ruby
5.
MongoDB CompassMongoDB Compass – официальный графический
клиент для Mongo
6.
Настройка и запуск в консолиСкачайте дистрибутив свежей версии MongoDB c официального
сайта: https://www.mongodb.com/try/download/community
1. Распакуйте архив MongoDB. Например в каталог: C:\mongodb
2. Создайте каталог для хранения баз данных созданных в Mongo.
Например: C:\mongodb\data
3. Запустите сервер Mongo c параметром, для указания каталога
хранения баз данных:
C:\mongodb\bin\mongod.exe --dbpath c:\mongodb\data
4. После успешного запуска сервера запустите клиента Mongo:
mongo.exe
Скачайте архив MongoDB Compass и распакуйте на диске
https://www.mongodb.com/try/download/compass
Запустите Compass: /MongoDBCompass.exe
7.
Настройка и запуск в консолиСодержимое пакета MongoDB (bin)
1. bsondump: считывает содержимое BSON-файлов и преобразует их в
читабельный формат, например, в JSON
2. mongo: представляет консольный интерфейс для взаимодействия с
базами данных
3. mongod: сервер баз данных MongoDB.
4. mongodump: утилита создания бэкапа баз данных
5. mongoexport: утилита для экспорта в форматы JSON, TSV или CSV
6. mongofiles: утилита, для управления файлами в системе GridFS
7. mongoimport: утилита, импортирующая данные
8. mongooplog: для опроса серверов на наличие операций с БД
9. mongoperf: проверка производительности жесткого диска
10. mongorestore: позволяет записывать данные из дампа
11. mongos: служба маршрутизации, которая помогает обрабатывать
запросы и определять местоположение данных в кластере MongoDB
12. mongorestat: представляет счетчики операций с БД
13. mongotop: для подсчета времени, затраченного на операции чтениязаписи в БД
8.
Администрирование БДuse Название_БД – установка (создание) базы данных
Название БД не должно содержать символы: /, \, ., ", *, <, >, :, |, ?, $,
и нельзя использовать зарезервированные слова.
show dbs – просмотр всех БД
db – просмотр текущей БД
db.persons.save( {Name: ‘Павел’, Age: 20} ) – сохранение документа в
коллекции
db.persons.insert({Name: ‘Мария’, Age: 22, Status: ‘Manager’}) – вставка
документа в коллекцию
db.persons.find() – просмотр всех документов коллекции БД
show collections – просмотр всех коллекций в БД
db.persons.renameCollection(‘новое_название’) – переименование
коллекций
db.stats() – сведения о статистике по БД
db.createCollection(‘название коллекции’) – явное создание коллекции
9.
Типы данных в MongoString: строковый тип данных (кодировка UTF-8)
Array (массив): массив элементов
Binary data: бинарный формат
Boolean: логические значения TRUE или FALSE
Date: дата в формате времени Unix
Double: числа с плавающей точкой
Integer: целочисленные значения
JavaScript: тип данных для хранения кода javascript
Null: тип данных для хранения значения Null
Object: строковый тип данных
ObjectID: для хранения id документа
Regular expression: для хранения регулярных выражений
Symbol: строковый тип данных. Используется для языков, в которых
есть специальные символы.
• Timestamp: применяется для хранения времени
10.
Идентификатор документаИндексы (_id) Mongo создает автоматически.
Индексы можно задавать самостоятельно:
db.city.insert({_id: ObjectId('12345'), name: 'Novosibirsk'})
Просмотр коллекции system.indexes:
db.system.indexes.find()
11.
Селекторы$or – или
$lt – меньше
$lte – меньше или равно
$gt – больше
$gte – больше или равно
$ne – не равно
$exists – наличие/отсутствие поля (true/false)
db.city.find( {age: 300} ) – выборка документов
db.users.find( {age: 300, residents: 1000000} ) – соответствует
команде «И»
db.users.find( {$or: [ {age: 300}, {residents: 1000000} ]} ) – или
db.users.find( { age: {$in: [ 5, 10 ] } } ) – искать «в»
db.city.find( {age: {$gte: 300}} ) – выборка больше или равно
db.city.find( { residents: {$exists: true} } ) – выборка документов,
содержащих указанное поле
12.
Селекторыdb.city.insert({name:'Aldan', region: {name:'Sakha', country:'Russia'}})
db.users.find({region.country: 'Russia'}) – находим все документы,
используя поиск по вложенным документам
db.users.find().sort({name: 1}) – сортировка по полю по
возрастанию
db.users.find().sort({name: -1}) – сортировка по полю по убыванию
13.
Обновление updateupdateOne – меняем один из выбранных документов
updateMany – меняем все выбранные документы
Полная замена документа:
updateOne( {“выбираем”}, {“меняем весь документ”} )
db.city.update({name: Yakutsk}, {residents: 300})
Меняем значения только в указанных полях:
updateOne( {“выбираем”}, { $set: {“меняем только указанные
поля”} } )
db.city.updateMany({name: ‘Yakutsk’}, {$set: {residents: 300}})
Другие обновления значений полей:
db.city.updateOne({name : ‘Yakutsk’}, {$inc: {age:1}}) – отнять единицу
db.city.updateMany({name : ‘Moscow’}, {$push: {status: ‘Capital_City’}})
– добавление значения к существующему (в массивах)
14.
Селекторы обновления$set – добавление поля
$unset – удаление поля
$push – добавление элемента в массив
$addToSet – добавление элементов (только отсутствующих в
массиве)
$pull – удаление элементов в массиве
$each – добавление нескольких значений
db.person.updateOne({name: /^Г/}, {$set: {age: 11, city: "Yakutsk"}})
db.person.updateOne({name: /ов$/}, {$unset: {age:"", city: ""}})
db.person.updateMany({name: /^М/}, {$push: {hobby: "Sport"}})
db.person.updateOne({name: /а/}, {$addToSet: {hobby: "Sport"}})
db.person.updateOne({name: /^К/}, {$pull: { hobby: "Sport"}});
15.
Сортировка выборкиdb.users.find().sort({name: 1}) – сортировка по
возрастанию
db.users.find().sort({name: -1}) – сортировка по
убыванию
16.
Лабораторная работа 7Создайте в базе данных user коллекцию person, содержащую некоторые
сведения о людях (слайд 17).
1. Выведите данные о студентах, отсортированные по фамилии.
2. Выведите данные о людях, имеющих хобби.
3. Добавьте всем учителям данные об увлечении чтением.
4. Выведите сведения о людях, фамилии которых начинаются на «К».
5. Напишите запрос, позволяющий вывести сведения о людях,
увлекающихся музыкой.
6. Поменяйте Савельеву Михаилу профессию на «Электрик».
7. *Выведите данные о тех, кому меньше 18 и кому уже исполнилось 50
лет, за исключением тех, кто не имеет хобби.
17.
Коллекция «Person»db.person.insert({name: 'Григорьев Михаил', birth: new Date(1990, 2, 13), hobby:
['Теннис', 'Компьютерные игры'], gender: 'M', prof: 'Студент'});
db.person.insert({name: 'Иванов Николай', birth: new Date(1970, 3, 5), gender: 'М', prof:
'Таксист'});
db.person.insert({name: 'Михайлова Ксения', birth: new Date(2003, 3, 3), gender: 'Ж',
prof: 'Школьник'});
db.person.insert({name: 'Капитонов Карим', birth: new Date(2014, 4, 20), gender: 'М',
prof: 'Дошкольник'})
db.person.insert({name: 'Кропоткин Павел', birth: new Date(1983, 12, 30), gender: 'М',
prof: 'Учитель', hobby: ['Футбол', 'Охота']});
db.person.insert({name: 'Ушакова Ульяна', birth: new Date(2010, 11, 5), hobby:
['Музыка', 'Танцы', 'Гимнастика'], gender: 'Ж'});
db.person.insert({name: 'Савельев Михаил', gender: 'М', prof: 'Механик', hobby:
['Компьютерные игры']});
db.person.insert({name: 'Алексеев Айаал', birth: new Date(1992, 10, 1), hobby:
['Техника'], gender: 'М', prof: 'Студент'});
db.person.insert({name: 'Винокуров Виктор', birth: new Date(2012, 8, 12), gender: 'М'});
db.person.insert({name: 'Спилберг Стивен', birth: new Date(1946, 12, 18), gender: 'M',
prof: 'Кинорежиссер', hobby: ['Кино', 'Музыка']});
database