mongoDB的安裝及基本使用

1.mongoDB簡介

1.NoSQL數(shù)據(jù)庫

  • 數(shù)據(jù)庫:進行高效的血巍、有規(guī)則的進行數(shù)據(jù)持久化存儲的軟件

  • NoSQL數(shù)據(jù)庫:Not only sql甲献,指代非關(guān)系型數(shù)據(jù)庫

    • 優(yōu)點:高可擴展性、分布式計算、低成本、靈活架構(gòu)前弯、半結(jié)構(gòu)化數(shù)據(jù)、簡化關(guān)聯(lián)關(guān)系

    • 缺點:沒有標準化秫逝、有限查詢恕出、不直觀

  • 常見NoSQL數(shù)據(jù)庫

    • 列存儲:Hbase、Cassandra违帆、Hypertable

    • 文檔存儲:MongoDB浙巫、CouchDB

    • k-v存儲:TokyoCabinet、BerkeleyDB前方、MemcacheDB狈醉、redis

    • 對象存儲:Neo4J、Versant

    • Xml數(shù)據(jù)庫:BerkeleyDB惠险、BaseX

注:黑色加粗的為常用的數(shù)據(jù)庫

2.MongoDB概述

MongoDB 是一個基于分布式文件存儲的數(shù)據(jù)庫苗傅。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數(shù)據(jù)存儲解決方案班巩。

MongoDB 是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品渣慕,是非關(guān)系數(shù)據(jù)庫當中功能最豐富,最像關(guān)系數(shù)據(jù)庫的抱慌。

優(yōu)點:

  • C++編寫的運行穩(wěn)定性能高的數(shù)據(jù)
  • 模式自由
  • 面向集合
  • 完整索引支持
  • 復制和高可用性

3.Mongodb術(shù)語解釋

  • database--database:數(shù)據(jù)庫
  • table – collection:數(shù)據(jù)庫表 – 集合
  • row – document: 數(shù)據(jù)記錄 – 文檔
  • column – field:數(shù)據(jù)字段 – 域
  • index – index :索引 – 索引
  • table-join – None:表連接~
  • primary key – primary key :主鍵

4.MongoDB基本語法——數(shù)據(jù)類型

  • 集合就是關(guān)系型書庫中的表

  • 文檔對應關(guān)系型數(shù)據(jù)庫中的行

  • 文檔:就是一個JSON對象逊桦,由KEY=VALUE鍵值對構(gòu)成

{“name”:”admin”, “gender”:”男”}
  • 集合:存儲多個文檔,結(jié)構(gòu)不固定
{“name”:”admin”, “gender”:”男”}
{“name”:”manager”, “age”:23}
{“name”:”manager”, “phone”:”16868686868”}
  • 數(shù)據(jù)庫:存儲多個集合

  • 服務器:一個服務器中可以包含多個數(shù)據(jù)庫

  • ObjectID:文檔id
  • String:字符串
  • Boolean:布爾值
  • Integer:整數(shù)
  • Double:浮點數(shù)
  • Arrays:數(shù)組或者列表
  • Object:嵌入的文檔
  • Null:空值
  • Timestamp:時間戳
  • Date:日期時間

2.MySQL的安裝

回顧一下MySQL在ubuntu的安裝

  • 在終端輸入命令
sudo apt-get install mysql-server

sudo apt-get install mysql-client

sudo apt-get install libmysqlclient-dev
#安裝過程中會提示設(shè)置密碼什么的抑进,注意設(shè)置了不要忘了
  • 安裝完畢后輸入以下命令檢測是否安裝成功
sudo netstat -tap | grep mysql
通過上述命令檢查之后强经,如果看到有mysql 的socket處于 listen 狀態(tài)則表示安裝成功。
  • 登陸mysql數(shù)據(jù)庫可以通過如下命令:
mysql -u root -p

-u 表示選擇登陸的用戶名寺渗, -p 表示登陸的用戶密碼匿情,上面命令輸入之后會提示輸入密碼兰迫,此時輸入密碼就可以登錄到mysql。

然后通過 show databases; 就可以查看當前的數(shù)據(jù)庫炬称。

3.Mongodb下載安裝

  • 官方網(wǎng)站
    注意:偶數(shù)為穩(wěn)定版,如1.6玲躯,奇數(shù)為開發(fā)版据德,如1.7

1.Windows下Mongodb安裝

直接下載msi文件或者點擊All Verison Binaries下載都行

我這里用的是zip安裝,安裝完畢后跷车,

當前所在磁盤目錄下創(chuàng)建data文件夾

data文件夾中創(chuàng)建db文件夾和log文件夾
  • 在運行窗口輸入命令啟動數(shù)據(jù)庫
mongod --dbpath d:/data/db
啟動mongoDB數(shù)據(jù)庫
  • 打開一個新的窗口輸入命令mongo,用于數(shù)據(jù)庫操作
    打開一個新的窗口棘利,用于數(shù)據(jù)庫操作

2.Linux下Mongodb安裝

MongoDB安裝很簡單,無需下載源文件姓赤,可以直接用apt-get命令進行安裝赡译。

1 . 打開終端仲吏,輸入以下命令:

sudo apt-get install mongodb

2 . 安裝完成后不铆,在終端輸入以下命令查看MongoDB版本:

mongo -version

顯示版本信息,即安裝成功

3 . 啟動mongo數(shù)據(jù)庫

  • 在終端輸入命令
sudo mongo
啟動mongo數(shù)據(jù)庫

3.安裝pymongo

PyMongo是Mongodb的Python接口開發(fā)包裹唆,是使用python和Mongodb的推薦方式誓斥。

用Python操作MongoDB需要通過PyMongo,輸入命令安裝

pip install pymongo          默認安裝
pip install pymongo==2.8      安裝指定版本
pip install –upgrade pymongo   升級PyMongo
安裝成功
命令運行成功無報錯

4.Mongodb基本使用

1.基本操作

  • mongoDB將數(shù)據(jù)存儲為一個文檔

  • 數(shù)據(jù)由 key=value 的鍵值對的形式組成

  • 數(shù)據(jù)的操作:增刪改查

  • nosql三元素:數(shù)據(jù)庫 – 集合 – 文檔 [--域]

2.基本語法

  • 數(shù)據(jù)庫操作

    • db:查看當前指向的數(shù)據(jù)庫

    • show dbs:查看當前所有的數(shù)據(jù)庫

    • use <數(shù)據(jù)庫名稱>:指向一個數(shù)據(jù)庫
      Use數(shù)據(jù)庫不會創(chuàng)建數(shù)據(jù)庫,如果操作數(shù)據(jù)會自動創(chuàng)建數(shù)據(jù)庫

    • db.dropDatabase():刪除當前指向的數(shù)據(jù)庫

  • 集合操作

    • show collections:查看當前數(shù)據(jù)庫所有集合

    • db.createCollection(<c_name> [, options]):創(chuàng)建一個集合

    • db.<集合名稱>.drop():刪除指定的集合

show collections 查看當前庫中所有的集合许帐,后面的collections不要加括號

db.createCollection(name, [optinos]) 
創(chuàng)建一個名稱為name的集合劳坑,后面的options表示創(chuàng)建的附帶選項
db.createCollection(“emp”):創(chuàng)建一個名稱為emp的名稱的集合
db.createCollection(“dept”, {“capped”: true, size: 5}):capped默認false
表示不設(shè)置上限,true表示設(shè)置上限需要設(shè)置size參數(shù)~表示達到上限時會將之前的數(shù)據(jù)覆蓋
  • 增加數(shù)據(jù)
    • 語法:db.<集合名稱>.insert(文檔)

    • 集合可以是原來存在的成畦,可以是不存在的

    • 文檔:就是JSON格式表示的數(shù)據(jù)

    • 簡單查詢:db.<集合名稱>.find()查詢指定集合的數(shù)據(jù)

db.student.insert({name:”jerry”, gender:”男”})

db.student.insert({_id:”1”, name:”tom”, gender:”女”, age:18})
  • 更新數(shù)據(jù)
    • 語法:db.<集合名稱>.update(<query>, <update>,[multi:<boolean>])

    • 指定屬性更新:$opration

    • multi:默認false更新符合條件第一條距芬,設(shè)置true全集合更新

#更新符合條件的文檔
db.student.update({name:”tom”}, {name:”jerry”})

#更新符合條件的文檔中符合條件的域
db.student.update({name:”tom”}, {$set:{name:”jerry”}})

#更新符合條件的多行文檔及對應的域
db.student.update({}, {$set:{name:”donghua”}}, {multi:true})
  • 保存數(shù)據(jù)

    • 語法:db.<集合名稱>.save(文檔)

    • 特征:[ _id ]如果數(shù)據(jù)不存在就添加,如果數(shù)據(jù)存在修改

  • 刪除數(shù)據(jù)

    • 語法:db.<集合名稱>.remove(<query>, {justone:<boolean>})

    • 參數(shù)query:刪除文檔的條件

    • 參數(shù)justOne:設(shè)置為true或者1循帐,刪除一條框仔;默認false刪除多條


查詢數(shù)據(jù)

  • 基本查詢
    • find([{文檔條件}]):全集合查詢

    • findOne([{文檔條件}]):查詢第一個

    • pretty():將查詢結(jié)果格式化展示

  • 比較運算符
 默認判斷,無運算符
 $lt:little~小于 <
 $lte:little or equals~小于等于 <=

 $gt:granter~大于 >
 $gte:granter or equals~大于等于 >=


#查詢名稱為jerry的學生
db.student.find({name:”jerry”})

#查詢年齡已經(jīng)適婚年齡的學員
db.student.find({age:{$gte:20}})
  • 邏輯運算符
    • 邏輯與:并且運算拄养,默認操作离斩,無運算符

    • 邏輯或:或者運算,$or

#查詢年齡已經(jīng)適婚年齡并且性別為女的學員
db.student.find({age:{$gte:20}, gender:”女”})

#查詢年齡大于18或者性別為男的學員
db.student.find({$or:[{age:{$gt:18}, {gender:”女”}]})

  • 范圍運算符
    • **$in:判斷指定條件是否包含在某個范圍內(nèi)

    • **$nin:判斷指定條件是否不包含在某個范圍內(nèi)

#查詢年齡在18或者20的學員
db.student.find({age: {$in:[18,20]}})

#查詢年齡不是18 的學員
db.student.find({age: {$nin : [20]}})
  • 限制查詢條數(shù)
 <find>.limit(count)
  • 排序
<find>.sort({字段:1/-1, ...})
db.student.find().sort({name:1})
    1.表示升序排列 -1表示降序排列瘪匿,可以指定多個字段
  • 統(tǒng)計
<find>.count()

 db.<集合名稱>.count({條件})

兩種操作方式
1.查詢結(jié)果跛梗,通過count()統(tǒng)計數(shù)據(jù)
2. 通過count()直接添加條件統(tǒng)計數(shù)據(jù)
  • 去重
db.<集合名稱>.distinct(“去重域名稱”, {條件})

查詢數(shù)據(jù)列表中,所有的年齡分布情況
db.student.distinct(“age”, {})
  • 分頁
#隔n個數(shù)據(jù)查詢m個數(shù)據(jù)
db.hero.find().pretty().limit(m).skip(n)

5.Mongodb與python交互

  • 之前學習了爬蟲棋弥,現(xiàn)在我們把爬取得到的數(shù)據(jù)存儲于Mongodb中
#-*- coding:utf-8 -*-
import pymongo
import requests
from bs4 import BeautifulSoup

#建立于MongoClient 的連接
client = pymongo.MongoClient('localhost',27017)
#得到數(shù)據(jù)庫
hero = client['hero']
#得到一個數(shù)據(jù)集合
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)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末核偿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子顽染,更是在濱河造成了極大的恐慌漾岳,老刑警劉巖聂薪,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蝗羊,居然都是意外死亡藏澳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門耀找,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翔悠,“玉大人,你說我怎么就攤上這事野芒⌒畛睿” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵狞悲,是天一觀的道長撮抓。 經(jīng)常有香客問我,道長摇锋,這世上最難降的妖魔是什么丹拯? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮荸恕,結(jié)果婚禮上乖酬,老公的妹妹穿的比我還像新娘。我一直安慰自己融求,他們只是感情好咬像,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著生宛,像睡著了一般县昂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陷舅,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天倒彰,我揣著相機與錄音,去河邊找鬼蔑赘。 笑死狸驳,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的缩赛。 我是一名探鬼主播耙箍,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼酥馍!你這毒婦竟也來了辩昆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤旨袒,失蹤者是張志新(化名)和其女友劉穎汁针,沒想到半個月后术辐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡施无,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年辉词,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猾骡。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡瑞躺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兴想,到底是詐尸還是另有隱情幢哨,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布嫂便,位于F島的核電站捞镰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏毙替。R本人自食惡果不足惜岸售,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蔚龙。 院中可真熱鬧冰评,春花似錦、人聲如沸木羹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坑填。三九已至,卻和暖如春弛姜,著一層夾襖步出監(jiān)牢的瞬間脐瑰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工廷臼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留苍在,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓荠商,卻偏偏與公主長得像寂恬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子莱没,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容