知識內容:web
1.mongodb介紹與基本使用sql
2.mongodb操做mongodb
1、mongodb介紹與基本使用數據庫
1.mongodb介紹數組
Mongodb是一款強大,靈活,且易於擴展的通用型數據庫。它能擴展出很是多的功能,如二級索引,範圍查詢,排序,聚合,以及地理空間索引。MongoDB做爲文檔數據庫,支持複雜的關係存儲,更適合如今的web2.0時代服務器
易於使用:session
Mongodb是一個面向文檔的數據庫,而不是關係數據庫,不採用關係模型主要是爲了得到更好的擴展性,還有一些其餘的好處。與關係型數據庫相比,面向文檔的數據庫再也不用行的概念,取而代之的是更爲靈活的「文檔(document)」,經過在文檔中嵌入文檔和數組,面向文檔的方法可以僅使用一條記錄來表現複雜的層次關係,這與使用現代面嚮對象語言的開發者對數據的見解一致。app
易於擴展:dom
MongoDB的設計是採用橫向擴展。面向文檔的數據模型使他能很容易地在多臺服務器之間進行數據分割。MongoDB能自動處理跨集羣的數據和負載,自動從新分配文檔,以及將用戶請求路由到正確的機器上。函數
豐富的功能:
2.mongodb安裝及鏈接數據庫
(1)下載
下載mongodb數據庫服務端及mongodb數據庫管理軟件robomongo
(2)安裝
就跟安裝普通軟件同樣,robomongo本身去設置安裝位置,Windows系統安裝mongodb完後以下:
(3)運行服務器
在命令行中運行服務器程序 mongod.exe 出現以下錯誤
出現如下錯誤是由於缺乏數據文件目錄,按照上面的提示到C盤下新建data目錄,而後再在data目錄下新建db目錄再從新運行程序,出現如下提示所有勾選上
成功運行服務器,如今正等待鏈接:
(4)鏈接服務器(鏈接數據庫)
打開以前安裝的robomongo軟件,而後點擊create 建立鏈接並點擊save便可,而後選中鏈接並點擊connect便可鏈接上數據庫
鏈接上以後:
2、mongodb操做
1.鏈接數據庫建立表(document)並插入數據
代碼:
1 "" 2 注意,須要安裝 pymongo 這個庫 3 pip3 install pymongo 4 5 在你安裝並開啓 mongo 以後,就可使用 pymongo 來鏈接使用 mongodb 了 6 """ 7 import pymongo 8 import random 9 10 # 鏈接 mongo 數據庫, 主機是本機, 端口是默認的端口 11 client = pymongo.MongoClient("mongodb://localhost:27017") 12 print("成功鏈接數據庫", client) 13 14 # 設置要使用的數據庫 15 mongodb_name = 'mongo_demo' 16 # 直接這樣就使用數據庫了,至關於一個字典 -> 若是沒有會自動建立 不須要咱們本身去建立 (表也是同樣) 17 # 下面這一句也能夠這樣寫: db = client.mongo_demo 18 db = client[mongodb_name] 19 20 21 # 插入數據 22 # === 23 # mongo 中的 document 至關於 sqlite 中的 table 24 # 不須要定義,直接使用 25 # 不限定每條數據的字段 26 # 直接插入新數據,數據以字典的形式提供 27 # 下面的例子中, user 是文檔名(表名),不存在的文檔會自動建立 28 # 每一個數據有一個自動建立的字段 _id,能夠認爲是 mongo 自動建立的主鍵 29 30 def insert(): 31 u = { 32 'name': 'wyb', 33 'note': 'admin', 34 '隨機值': random.randint(0, 3), 35 } 36 db.user.insert(u) 37 38 39 insert()
運行一次上述代碼,刷新robomongo,以下:
2.查詢數據
1 import pymongo 2 3 # 鏈接 mongo 數據庫, 主機是本機, 端口是默認的端口 4 client = pymongo.MongoClient("mongodb://localhost:27017") 5 print("成功鏈接數據庫", client) 6 7 # 設置要使用的數據庫 8 mongodb_name = 'mongo_demo' 9 db = client[mongodb_name] 10 11 12 # 查找數據 -> find 13 # find 返回一個可迭代對象,使用 list 函數轉爲數組 14 def find(): 15 user_list = list(db.user.find()) 16 print('全部用戶: ') 17 for item in user_list: 18 print(item) 19 20 find() 21 22 # find 能夠傳入參數來作條件查詢 23 # 具體能夠很複雜 這裏只演示簡單的 24 # 查詢隨機值爲 1 的全部數據 25 def find1(): 26 # 查詢 隨機值 等於1 的全部數據 27 query = { 28 '隨機值': 1, 29 } 30 print('random 1: ', list(db.user.find(query))) 31 32 # 查詢 隨機值 等於1 而且 name等於xxx 的全部數據 33 query = { 34 '隨機值': 1, 35 'name': 'xxx', 36 } 37 print('random 1 and name xxx: ', list(db.user.find(query))) 38 39 # 查詢 隨機值 大於 1 的全部數據 40 query = { 41 '隨機值': { 42 '$gt': 1 43 }, 44 } 45 print('random > 1', list(db.user.find(query))) 46 47 # $or 查詢 48 query = { 49 '$or': [ 50 { 51 '隨機值': 2, 52 }, 53 { 54 'name': 'xxx' 55 } 56 ] 57 } 58 print('or 查詢', list(db.user.find(query))) 59 60 # $gt -> 大於 61 # 此外還有 $lt $let $get $ne $or 等條件 62 # $lt -> 小於 $let -> 小於等於 $get -> 大於等於 $ne -> 不等於 $or -> 兩種狀況中至少知足一種 63 64 65 find1() 66 67 68 # 部分查詢(指定區域) 69 # 部分查詢, 至關於 select xx, yy from 表名 語句 70 def find_condition(): 71 query = {} 72 field = { 73 # 字段: 1 表示提取這個字段 74 # 不傳的 默認是 0 表示不提取 75 'name': 1 76 } 77 print('部分查詢,只查詢name: ', list(db.user.find(query, field))) 78 79 80 find_condition()
3.更新、刪除數據
1 import pymongo 2 import random 3 4 # 鏈接 mongo 數據庫, 主機是本機, 端口是默認的端口 5 client = pymongo.MongoClient("mongodb://localhost:27017") 6 print("成功鏈接數據庫", client) 7 8 # 設置要使用的數據庫 9 mongodb_name = 'mongo_demo' 10 db = client[mongodb_name] 11 12 13 # 更新數據 14 # 默認更新第一條查詢到的數據 15 def update(): 16 # 查找參數 17 query = { 18 '隨機值': 1, 19 } 20 # 修改參數 21 form = { 22 '$set': { 23 'name': '更新後的name', 24 } 25 } 26 # db.user.update(query, form) 27 # 若是想要更新全部查詢到的數據 28 # 須要加入下面的參數 {'multi': True} 29 options = { 30 'multi': True, 31 } 32 # 下面這一句至關於 db.user.update(query, form, multi=True) 33 db.user.update(query, form, **options) 34 35 36 # update() 37 38 39 # 刪除 40 # === 41 # 刪除和 find 是同樣的 42 # db.user.remove()
4.注意
1 # select_all 是給用戶使用的查詢函數 2 # 若是一個數據是被刪除了的,那麼這個數據的_delected字段就爲True,那麼這個數據就不會被查詢到 3 def select_all(): 4 query = { 5 '_deleted': False, 6 } 7 user_list = list(db.user.find(query)) 8 res = [] 9 for u in user_list: 10 u.pop('_deleted') # 去掉_delected屬性 11 us.append(u) # 把數據加入結果列表中 12 print('全部用戶', len(res), res) 13 14 # select_all()