mongodb
20 commands
20 shown
Подключиться через mongosh
Открыть интерактивный шелл MongoDB
mongosh 'mongodb://user:pass@mongo:27017/dbname'
Статус replica set
Члены replica set, отставание, статус выборов
mongosh --eval 'rs.status()' mongodb://mongo:27017
Статистика базы данных
Размер данных, хранилища, количество коллекций
mongosh --eval 'db.stats()' mongodb://mongo:27017/mydb
Статистика коллекции
Количество документов, размеры индексов, хранилище коллекции
mongosh --eval 'db.myCollection.stats()' mongodb://mongo:27017/mydb
Текущие операции
Операции выполняющиеся дольше 5 секунд
mongosh --eval 'db.currentOp({active:true,secs_running:{$gt:5}})' mongodb://mongo:27017
Создать дамп
Экспортировать базу данных в BSON файлы
mongodump --uri='mongodb://user:pass@mongo:27017' --db=mydb --out=/backups/
Восстановить из дампа
Импортировать BSON бэкап в MongoDB
mongorestore --uri='mongodb://user:pass@mongo:27017' --db=mydb /backups/mydb/
Список индексов
Все индексы коллекции
mongosh --eval 'db.myCollection.getIndexes()' mongodb://mongo:27017/mydb
Подключиться по URI
Подключиться к Atlas или любому MongoDB URI с mongosh
mongosh 'mongodb+srv://user:pass@cluster.example.com/mydb'
План выполнения запроса
Статистика выполнения включая использование индекса
db.orders.find({status:'new'}).explain('executionStats')
Создать составной индекс
Индекс по userId↑ и createdAt↓
db.orders.createIndex({userId: 1, createdAt: -1}, {background: true})
Пример aggregation pipeline
Топ 10 пользователей по сумме оплаченных заказов
db.orders.aggregate([{$match:{status:'paid'}},{$group:{_id:'$userId',total:{$sum:'$amount'}}},{$sort:{total:-1}},{$limit:10}])
Отставание репликации
Отставание вторичных нод и окно oplog
rs.printSecondaryReplicationInfo()
Текущие операции (медленные запросы)
Операции выполняющиеся более 5 секунд
db.currentOp({active:true, secs_running:{$gt:5}})
Дамп базы данных
Дамп всех коллекций базы в BSON файлы
mongodump --uri='mongodb://localhost:27017' --db=mydb --out=/backup/$(date +%F)
Статус набора реплик
Состояние и время последней операции по каждому участнику; находит отстающие или нездоровые реплики
mongosh --eval 'rs.status().members.forEach(m=>print(m.name,m.stateStr,m.optimeDate))'
Завершение долгих операций
Показывает запросы дольше 5с с ns и завершает каждый через killOp; прим.: killOp асинхронна, проверьте результат
mongosh --eval 'db.currentOp({secs_running:{$gt:5},op:{$ne:"none"}}).inprog.forEach(o=>{print(o.opid,o.secs_running,o.ns); db.killOp(o.opid)})'
План запроса со статистикой
Показывает просмотренные и возвращённые документы и использование индекса; COLLSCAN — индекса нет
mongosh --eval 'db.<name>.find({status:"active"}).explain("executionStats").executionStats'
Поиск неиспользуемых индексов
Число обращений к каждому индексу; ноль — кандидат на удаление ради экономии на записи
mongosh --eval 'db.<name>.aggregate([{$indexStats:{}}]).forEach(i=>print(i.name,i.accesses.ops))'
Профилирование медленных запросов
Записывает операции медленнее 100мс, затем читает худшие из system.profile
mongosh --eval 'db.setProfilingLevel(1,{slowms:100}); db.system.profile.find().sort({millis:-1}).limit(5)'
no commands match