MongoDB - andyceo/documentation GitHub Wiki
-
Если вы меняете имя коллекции в коде MongoEngine (имя модели), когда будете обновлять имя коллекции в Mongo (
db.current_collection_name.renameCollection("new_collection_name")
) (документация метода db.collection.renameCollection), не забудьте после этого обновить имя класса_cls
на новое имя класса модели MongoEngine в каждом документе новой коллекции, иначе выборки с помощью MongoEngine работать не будут. -
Посмотреть текущую информацию о сервере можно с помощью метода
db.serverStatus()
. Текущие соединения и простую статистику по ним можно посмотреть используя нужное полеconnections
:db.serverStatus().connections
-
Посмотреть список баз данных:
show databases
илиshow dbs
-
Посмотреть список пользователей в базе данных:
db.getUsers()
. По умолчанию показывает пользователей в системной базе данныхadmin
. Также можно воспользоваться командойshow users
. -
Создать административного пользователя:
db.createUser({ user: 'root', pwd: 'PASSWORD', roles: [ { role: "root", db: "admin" } ] })
-
Создать пользователя в базе данных и предоставить ему все привилегии на эту базу:
use mydatabase db.createUser({ user: "myUser", pwd: "password", roles: [ "readWrite", "dbAdmin" ] })
Или в одну строчку:
db.createUser({user: "myUser", pwd: "password", roles: [ "readWrite", "dbAdmin" ]})
-
Обновить пароль у пользователя(db.changeUserPassword()):
use mydatabase db.changeUserPassword("your_user_name", "new_password")
-
Если вдруг при работе все выглядит так, будто MongoDB зависла, проверьте блокировки:
use config db.locks.find()
Также, попробуйте принудительно сбросить блокировку:
db.fsyncUnlock()
-
Вывести документы, у которых существует поле
execution
, показав только поля_id
(выводится по умолчанию) иexecution
:db.yourcollection.find({execution: {$exists: true}}, {execution: 1})
Самый простой способ: sudo docker exec -it mongo mongo admin
Далее рассматривается ситуация, когда MongoDB крутится в контейнере, и есть возможность создавать другие контейнеры в общей с MongoDB подсетью (в данном примере docknet
).
Подключение из вновь созданного временного контейнера:
sudo docker run -it --rm --net=docknet mongo:3.4 mongo -u root -p MONGO_ROOT_PASSWORD --authenticationDatabase admin mongo/admin
Если переменные окружения с именем пользователя и его паролем проброшены в контейнер, и вы не хотите создавать промежуточный контейнер:
sudo docker exec -ti mongo sh -c 'exec mongo -u $MONGO_ROOT_USERNAME -p $MONGO_ROOT_PASSWORD --authenticationDatabase admin mongo/admin'
Подключение из developers-контейнеров:
mongo -u root -p MONGO_ROOT_PASSWORD --authenticationDatabase admin mongo/admin
- Things I wish I knew about MongoDB a year ago (октябрь 12-го, надо бы посвежее)