docker下mongo部署与操作
mongo是当下很流行的No SQL数据库,由于它的schema-free,则上手容易,自动分表分库的特性,受到很多新兴应用的青睐。
对于流行的关系数据库mysql,几个缺点。mongo不支持多表查询。如果需要经常关系几个表join,那使用mongo是不合适的。
当然关系数据库的事务之类的,也是不支持的。
除了如上2点吧,如果可以接受,那使用mongo还是很令人愉悦的。
docker pull mongo
#--auth启用密码验证
docker run -p 27017:27017 -v /mnt/db:/data/db -d --name my_mongodb mongo --bind_ip_all --auth
#进入容器,并使用mongo client进入admin
docker exec -it mymongo mongo admin
#创建用户管理员
db.createUser({ user: 'name', pwd: 'pwd', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
#退出,重新进入,使用刚才创建的用户名,密码登录
db.auth("name","pwd")
#切换表
use tablexxx
#为tablexxx创建读写权限用户write/write
db.createUser({ user: 'write', pwd: 'write', roles: [ { role: "readWrite", db: "tablexxx" } ] });
#为tablexxx创建读权限用户read/read
db.createUser({ user: 'read', pwd: 'read', roles: [ { role: "read", db: "tablexxx" } ] });
#搞定!
这是官方最新的mongo镜像,当然可以指定版本。
import pymongo
#连接mongo,默认数据库是sqlData
def get_mongodb(db='db'):
mongo_db = pymongo.MongoClient('ip', 27017)[db]
mongo_db.authenticate('write', 'write')
return mongo_db
#给指定表加索引
def ensure_index(tb,col):
db = get_mongodb()
db[tb].ensure_index(col)
#查看索引
def show_index(tb):
db = get_mongodb()
print(db[tb].index_information())
#添加文档
def add_doc(tb,doc):
db = get_mongodb()
db[tb].insert(doc)