標籤:src msi 簡介 空值 穩定性 one objectid none 屬性
1.mongoDB簡介1.1 NoSQL資料庫
註:黑色加粗的為常用的資料庫
1.2.MongoDB概述
MongoDB 是一個基於分布式檔案儲存體的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴充的高效能資料儲存解決方案。
MongoDB 是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。
優點:
- C++編寫的運行穩定效能高的資料
- 模式自由
- 面向集合
- 完整索引支援
- 複製和高可用性
1.3.Mongodb術語解釋
- database--database:資料庫
- table – collection:資料庫表 – 集合
- row – document: 資料記錄 – 文檔
- column – field:資料欄位 – 域
- index – index :索引 – 索引
- table-join – None:表串連~
- primary key – primary key :主鍵
1.4.MongoDB基本文法——資料類型
{“name”:”admin”, “gender”:”男”}
集合:儲存多個文檔,結構不固定
{“name”:”admin”, “gender”:”男”}{“name”:”manager”, “age”:23}{“name”:”manager”, “phone”:”16868686868”}
資料庫:儲存多個集合
伺服器:一個伺服器中可以包含多個資料庫
- ObjectID:文檔id
- String:字串
- Boolean:布爾值
- Integer:整數
- Double:浮點數
- Arrays:數組或者列表
- Object:嵌入的文檔
- Null:空值
- Timestamp:時間戳記
- Date:日期時間
2.Mongodb下載安裝
- 官方網站
注意:偶數為穩定版,如1.6,奇數為開發版,如1.7
2.1.Windows下Mongodb安裝
直接下載msi檔案或者點擊All Verison Binaries下載都行
我這裡用的是zip安裝,安裝完畢後,
mongo檔案夾中建立db檔案夾和log檔案夾
mongod --dbpath D:\軟體安裝\MongoDB\data\db(此處是db的路徑)
- 開啟一個新的視窗輸入命令mongo,用於資料庫操作
2.2.Linux下Mongodb安裝
MongoDB安裝很簡單,無需下載源檔案,可以直接用apt-get命令進行安裝。
1 . 開啟終端,輸入以下命令:
sudo apt-get install mongodb
2 . 安裝完成後,在終端輸入以下命令查看MongoDB版本:
mongo -version
顯示版本資訊,即安裝成功
3 . 啟動mongo資料庫
在終端輸入命令
sudo mongo
3.安裝pymongo
PyMongo是Mongodb的Python介面開發包,是使用python和Mongodb的推薦方式。
用Python操作MongoDB需要通過PyMongo,輸入命令安裝
pip install pymongo 預設安裝pip install pymongo==2.8 安裝指定版本pip install –upgrade pymongo 升級PyMongo
安裝成功
命令運行成功無報錯
4.Mongodb基本使用4.1.基本操作
4.2.基本文法
show collections 查看當前庫中所有的集合,後面的collections不要加括弧db.createCollection(name, [optinos]) 建立一個名稱為name的集合,後面的options表示建立的附帶選項db.createCollection(“emp”):建立一個名稱為emp的名稱的集合db.createCollection(“dept”, {“capped”: true, size: 5}):capped預設false表示不設定上限,true表示設定上限需要設定size參數~表示達到上限時會將之前的資料覆蓋
db.student.insert({name:”jerry”, gender:”男”})db.student.insert({_id:”1”, name:”tom”, gender:”女”, age:18})
- 更新資料
文法:db.<集合名稱>.update(<query>, <update>,[multi:<boolean>])
指定屬性更新:$opration
multi:預設false更新符合條件第一條,設定true全集合更新
#更新合格文檔db.student.update({name:”tom”}, {name:”jerry”})#更新合格文檔中合格域db.student.update({name:”tom”}, {$set:{name:”jerry”}})#更新合格多行文檔及對應的域db.student.update({}, {$set:{name:”donghua”}}, {multi:true})
查詢資料
基本查詢
find([{文檔條件}]):全集合查詢
findOne([{文檔條件}]):查詢第一個
pretty():將查詢結果格式化展示
比較子
預設判斷,無運算子 $lt:little~小於 < $lte:little or equals~小於等於 <= $gt:granter~大於 > $gte:granter or equals~大於等於 >=#查詢名稱為jerry的學生db.student.find({name:”jerry”})#查詢年齡已經適婚年齡的學員db.student.find({age:{$gte:20}})
- 邏輯運算子
邏輯與:並且運算,預設操作,無運算子
邏輯或:或者運算,$or
#查詢年齡已經適婚年齡並且性別為女的學員db.student.find({age:{$gte:20}, gender:”女”})#查詢年齡大於18或者性別為男的學員db.student.find({$or:[{age:{$gt:18}, {gender:”女”}]})
- 範圍運算子
$in:判斷指定條件是否包含在某個範圍內
$nin:判斷指定條件是否不包含在某個範圍內
#查詢年齡在18或者20的學員db.student.find({age: {$in:[18,20]}})#查詢年齡不是18 的學員db.student.find({age: {$nin : [20]}})
<find>.limit(count)
<find>.sort({欄位:1/-1, ...})db.student.find().sort({name:1}) 1.表示升序排列 -1表示降序排列,可以指定多個欄位
<find>.count() db.<集合名稱>.count({條件})
兩種操作方式1.查詢結果,通過count()統計資料2. 通過count()直接添加條件統計資料
db.<集合名稱>.distinct(“去重網域名稱稱”, {條件})查詢資料列表中,所有的年齡分布情況db.student.distinct(“age”, {})
#隔n個資料查詢m個資料db.hero.find().pretty().limit(m).skip(n)
5.Mongodb與python互動
之前學習了爬蟲,現在我們把爬取得到的資料存放區於Mongodb中
#爬取英雄聯盟英雄資訊詳情,並儲存#-*- coding:utf-8 -*-import pymongoimport requestsfrom bs4 import BeautifulSoup#建立於MongoClient 的串連client = pymongo.MongoClient(‘localhost‘,27017)#得到資料庫hero = client[‘hero‘]#得到一個資料集合sheet_tab = hero[‘sheet_tab‘]url = ‘http://lol.duowan.com/hero/‘req = requests.get(url)soup = BeautifulSoup(req.text,‘html.parser‘)links = soup.find(id="champion_list").find_all(‘a‘)for link in links: link = link[‘href‘] requ = requests.get(link) sop = BeautifulSoup(requ.text,‘html.parser‘) data = { ‘title‘ : sop.find(‘h2‘,class_="hero-title").get_text(), ‘name‘ : sop.find(‘h1‘,class_="hero-name").get_text(), ‘tags‘ : sop.find(‘div‘,class_="hero-box ext-attr").find_all(‘span‘)[1].get_text(), ‘story‘ : sop.find(‘div‘,class_="hero-popup").find_all(‘p‘)[0].get_text(), } sheet_tab.insert_one(data)
開啟mongo,運行代碼
通過Robo 3T視覺化檢視我們可以看到抓取到了137條資料,並且已儲存到mongodb中
mongoDB的安裝及基本使用