mongodb

20 commands

20 shown

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