-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
219 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,219 @@ | ||
# 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 | ||
``` | ||
|
||
--- | ||
* https://www.mongodb.com/docs/manual/reference/configuration-file-settings-command-line-options-mapping/ | ||
* https://www.mongodb.com/docs/manual/reference/ulimit/#recommended-settings | ||
|
||
|