Skip to content

Latest commit

 

History

History
219 lines (171 loc) · 6.99 KB

10010.mongodb.md

File metadata and controls

219 lines (171 loc) · 6.99 KB

mongodb - Справочник запросов

Операции с БД

Подключиться с паролем:

mongo -u 'root' -p 'pass' --authenticationDatabase "admin"

Показать список баз:

show dbs
db.adminCommand('listDatabases')

Показать текущую БД:

db

Список пользователей:

db.getUsers()

Восстановление БД (Выбираем use)

db.repairDatabase()

Операции с пользователями

Создать пользователя:

use <database>
db.createUser({user: "USER", pwd: "PASSWORD", roles: [{role: "readWrite", db: "DATABASE"}]})

Удалить пользователя:

admin.dropUser( "USER1" )

Операции с коллекциями:

Просмотреть список всех коллекций в текущей БД:

show collections

Создание коллекции

db.createCollection("name")

db.createCollection(«profile», {capped:true, size:8000, max: 100}) 
/* Ограниченная коллекция размером 8000 байт и максимальным количеством документов 100. Если все место под коллекцию заполнено (например, выделенные нами 9500 байтов), а количество документов еще не достигло максимума, то в этом случае при добавлении нового документа самый старый документ будет удаляться, а на его место будет вставляться новый документ.
*/

Переименование коллекции:

db.users.renameCollection("NEWNAME")	

Операции с документами

Вставка в документа:

db.users.insert ({«name»: «Tom», «age»: 28, languages: [«english», «spanish»]})
document=({«name»: «Bill», «age»: 32, languages: [«english», «french»]})
db.users.insert(document)
db.posts.insert( [ 
    {title: "blog post 1 title", body: "blog post 1 content"},
    {title: "blog post 2 title", body: "blog post 2 content"},
])

Обновление документов:

db.posts.updateOne({"_id": 1}, {$set: {"title": 'updated title'}})
db.posts.update({"category": "technology"}, {$set: {"category": 'computer science'}})

Ограничение имен ключей:

  • Символ $ не может быть первым символом в имени ключа
  • Имя ключа не может содержать символ точки .
  • _id не рекомендуется использовать

Вывод содержимого коллекции документов:

db.users.find()
db.posts.find().pretty()                                // Вывод с JSON форматированием
db.users.find().limit(3)                                // Вывести только 3 документа
db.users.find().skip(3)                                 // Пропустить первые 3 записи
db.users.find().sort({name: 1})	                        // Сортировать: по возрастанию (1) или по убыванию (-1)
db.users.find().sort({name: 1}).skip(3).limit(3)        // Все в одном 

Поиск по коллекции документов:

db.users.find({name: «Tom»})
db.users.find({name: «Tom», age: 32})                   // Логическое И
db.users.find({name: «Tom»}, {age: 1})                  // Вывести только свойство age
db.users.find({name: «Tom»}, {age: 1})                  // Вывести все свойства кроме age

Группировка документов:

db.users.count()
db.users.find({name: «Tom»}).count()                    // Только определенных документов
db.users.distinct("name")                               // Уникальные документы в рамках поля 'name'

Удаление:

db.users.remove({name : «Tom»})
db.users.remove({})                                     // Удалить все коллекции из документов
db.users.drop()                                         // Удалить коллекцию
db.dropDatabase()                                       // Удалить БД

Работа с индексами

Добавление:

db.posts.createIndex({"title": 1})
db.posts.createIndex({"title": 1, "date": 1})           //  Составной индекс

Получение списка индексов:

db.posts.getIndexes()

Удаление:

db.posts. dropIndex("title_1")

Статистика:

db.posts.stats()                                        // Статистика по индексам
db.posts.totalIndexSize()                               // Размер индекса

Состояние сервера

Показать коннекты текущее состояние

db.serverStatus()
db.serverStatus().connections
db.serverStatus().metrics
db.serverStatus().metrics.commands

Счетчик коннектов

db.currentOp(true).inprog.reduce((accumulator, connection) => { ipaddress = connection.client ? connection.client.split(":")[0] : "Internal"; accumulator[ipaddress] = (accumulator[ipaddress] || 0) + 1; accumulator["TOTAL_CONNECTION_COUNT"]++; return accumulator; }, { TOTAL_CONNECTION_COUNT: 0 })

Cостояние реплика-сетов

rs.conf()
rs.status()
rs.printReplicationInfo()

Бэкап и восстановление

Бекап и восстановление всех баз данных без сжатия:

mongodump --out /backup
mongorestore --dryRun -vvv --dir /backup                       // Режим dry-run
mongorestore --drop --dir /backup 

Восстановление определенной коллекции:

mongorestore --drop -v --dir /backup --nsInclude 'mydb.mycollectionname'

Восстановление всех БД и коллекций кроме определенной коллекции:

mongorestore --drop -v --dir /backup --nsExclude 'mydb.mycollectionname'

Бекап и восстановление всех баз данных с сжатием:

mongodump --gzip --out /backup
mongorestore --gzip --drop --dir /backup

Бэкап и восстановление всех БД с сжатием в один архив:

mongodump --gzip --archive=/backup/mybackup.gz
mongorestore --gzip --drop --archive=/backup/mybackup.gz

Бэкап определенной БД:

mongodump --gzip -d mydb

Бекап одной коллекции из базы данных:

mongodump --gzip -d mydb -c mycollection