Skip to content

MongoDB

andyceo edited this page Oct 27, 2017 · 9 revisions

Ссылки

Разное

  • Если вы меняете имя коллекции в коде 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})

Docker

Самый простой способ: 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

Ссылки

Sidebar is under construction

Clone this wiki locally