手把手教你MongoDB數(shù)據(jù)庫(kù)學(xué)習(xí)
MongoDB
MongoDB是一個(gè)介于關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系型數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系型數(shù)據(jù)庫(kù)的。
Ubuntu安裝MongoDB,直接sudo apt-get install mongodbMongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類(lèi)似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類(lèi)型。
Mongo最大的特點(diǎn)是它支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類(lèi)似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類(lèi)似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。
將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,文檔類(lèi)似與Json格式,比如下面形式。
- {
- name:"毛利",
- age:18,
- address: {city:"東莞", country:"china"}
- }
MongoDB數(shù)據(jù)模型

「如何進(jìn)入和退出mongo」

庫(kù)級(jí)操作語(yǔ)句
- 顯示所有庫(kù):show dbs
- 切換/創(chuàng)建數(shù)據(jù)庫(kù):use 數(shù)據(jù)庫(kù)名稱(chēng)
- 查看所在庫(kù):db
- 刪除庫(kù):db.dropDatabase()
集合操作語(yǔ)句
- 顯示當(dāng)前數(shù)據(jù)庫(kù)的集合:show collections
- 創(chuàng)建集合:db.createCollection(name)

- 刪除集合:db.集合名稱(chēng).drop()
文檔操作
添加文檔(數(shù)據(jù))
db.集合名稱(chēng).insert(document)
每一條數(shù)據(jù),就是一個(gè)document,就是一條json例:db.student.insert({name:'毛利', age:18})
注意點(diǎn):
添加文檔時(shí),如果不指定_id參數(shù) MongoDB會(huì)為文檔分配一個(gè)唯一的ObjectId
給定 _id例:db.student.insert({'_id':1, name:'毛利', age:18})
- 添加多條文檔
- db.student.insert([
- {name:'毛利, sex:'男', age:18},
- {name:’毛利的爸爸', sex:'男', age:47},
- {name:’毛利的姐姐', sex:'女', age:23},
- {name:’毛利的媽媽‘, sex:’女', age:44},
- ])
查詢文檔(數(shù)據(jù))
db.集合名稱(chēng).find([conditions])
查看集合中全部數(shù)據(jù):db.student.find()
格式化顯示:db.student.find().pretty()
查看滿足條件的數(shù)據(jù):db.student.find({name:'毛利'})
條件查詢
- and條件 {$and:[{expression1}, {expression1}, ...] }
- or條件 {$or:[{expression1}, {expression1}, ...]
}db.student.find({$or:[{$and:[{sex:'女'}, {age:23}]},{$and:[{sex:'男'}, {age:{$gte:18}}]}]})

修改文檔(數(shù)據(jù))
db.集合名稱(chēng).update(
更新集合中所有滿足條件的文檔:{ multi: true }
- db.student.update({sex:'男'}, {$set:{sex:'女'}}, { multi:true} )
把所有按的改為女的
刪除文檔(數(shù)據(jù))
db.集合名稱(chēng).remove(
刪除集合中所有的文檔:db.student.remove({}) 刪除集合中滿足條件的所有文檔db.student.remove({sex: '男'}) 只刪除集合中滿足條件的第一條文檔:{ justOne: true }
連接時(shí)需要使用 PyMongo 庫(kù)里面的 MongoClient 模塊,有兩種方式可以創(chuàng)建連接,默認(rèn)只需要傳入IP和端口號(hào)即可。如果數(shù)據(jù)庫(kù)存在賬號(hào)密碼,則需要指定連接的數(shù)據(jù)庫(kù),MongoDB的外網(wǎng)IP必須開(kāi)放,才能連接成功。
- >>> from pymongo import MongoClient
- >>> client = MongoClient('mongodb://192.168.92.92:27017')
- >>> db = client.school
- >>> for student in db.students.find():
- ... print('姓名:', student['name'])
本文已收錄 GitHub:https://github.com/MaoliRUNsen/runsenlearnpy100