docker下mongo部署與操作mongo是當(dāng)下很流行的No SQL數(shù)據(jù)庫(kù),由于它的schema-free,,則上手容易,,自動(dòng)分表分庫(kù)的特性,受到很多新興應(yīng)用的青睞,。 對(duì)于流行的關(guān)系數(shù)據(jù)庫(kù)mysql,,幾個(gè)缺點(diǎn)。mongo不支持多表查詢,。如果需要經(jīng)常關(guān)系幾個(gè)表join,,那使用mongo是不合適的,。 當(dāng)然關(guān)系數(shù)據(jù)庫(kù)的事務(wù)之類的,,也是不支持的。 除了如上2點(diǎn)吧,,如果可以接受,,那使用mongo還是很令人愉悅的。 docker pull mongo
#--auth啟用密碼驗(yàn)證
docker run -p 27017:27017 -v /mnt/db:/data/db -d --name my_mongodb mongo --bind_ip_all --auth
#進(jìn)入容器,,并使用mongo client進(jìn)入admin
docker exec -it mymongo mongo admin
#創(chuàng)建用戶管理員
db.createUser({ user: 'name', pwd: 'pwd', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
#退出,,重新進(jìn)入,使用剛才創(chuàng)建的用戶名,密碼登錄
db.auth("name","pwd")
#切換表use tablexxx
#為tablexxx創(chuàng)建讀寫權(quán)限用戶write/write
db.createUser({ user: 'write', pwd: 'write', roles: [ { role: "readWrite", db: "tablexxx" } ] });
#為tablexxx創(chuàng)建讀權(quán)限用戶read/read
db.createUser({ user: 'read', pwd: 'read', roles: [ { role: "read", db: "tablexxx" } ] });
#搞定,!
這是官方最新的mongo鏡像,,當(dāng)然可以指定版本。 import pymongo #連接mongo,默認(rèn)數(shù)據(jù)庫(kù)是db
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)
關(guān)于作者:魏佳斌,,互聯(lián)網(wǎng)產(chǎn)品/技術(shù)總監(jiān),,北京大學(xué)光華管理學(xué)院(MBA),特許金融分析師(CFA),資深產(chǎn)品經(jīng)理/碼農(nóng),。偏愛python,,深度關(guān)注互聯(lián)網(wǎng)趨勢(shì),,人工智能,AI金融量化,。致力于使用最前沿的認(rèn)知技術(shù)去理解這個(gè)復(fù)雜的世界,。
|