mongoDB的安裝及基本使用

1.mongoDB簡介

1.NoSQL數據庫

  • 數據庫:進行高效的、有規則的進行數據持久化存儲的軟件

  • NoSQL數據庫:Not only sql,指代非關系型數據庫

    • 優點:高可擴展性、分布式計算、低成本、靈活架構、半結構化數據、簡化關聯關系

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

  • 常見NoSQL數據庫

    • 列存儲:Hbase、Cassandra、Hypertable

    • 文檔存儲:MongoDB、CouchDB

    • k-v存儲:TokyoCabinet、BerkeleyDB、MemcacheDB、redis

    • 對象存儲:Neo4J、Versant

    • Xml數據庫:BerkeleyDB、BaseX

注:黑色加粗的為常用的數據庫

2.MongoDB概述

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

MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。

優點:

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

3.Mongodb術語解釋

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

4.MongoDB基本語法——數據類型

  • 集合就是關系型書庫中的表

  • 文檔對應關系型數據庫中的行

  • 文檔:就是一個JSON對象,由KEY=VALUE鍵值對構成

{“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.MySQL的安裝

回顧一下MySQL在ubuntu的安裝

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

sudo apt-get install mysql-client

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

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

然后通過 show databases; 就可以查看當前的數據庫。

3.Mongodb下載安裝

  • 官方網站
    注意:偶數為穩定版,如1.6,奇數為開發版,如1.7

1.Windows下Mongodb安裝

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

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

當前所在磁盤目錄下創建data文件夾

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

2.Linux下Mongodb安裝

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

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

sudo apt-get install mongodb

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

mongo -version

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

3 . 啟動mongo數據庫

  • 在終端輸入命令
sudo mongo
啟動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基本使用

1.基本操作

  • mongoDB將數據存儲為一個文檔

  • 數據由 key=value 的鍵值對的形式組成

  • 數據的操作:增刪改查

  • nosql三元素:數據庫 – 集合 – 文檔 [--域]

2.基本語法

  • 數據庫操作

    • db:查看當前指向的數據庫

    • show dbs:查看當前所有的數據庫

    • use <數據庫名稱>:指向一個數據庫
      Use數據庫不會創建數據庫,如果操作數據會自動創建數據庫

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

  • 集合操作

    • show collections:查看當前數據庫所有集合

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

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

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.<集合名稱>.insert(文檔)

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

    • 文檔:就是JSON格式表示的數據

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

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})
  • 保存數據

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

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

  • 刪除數據

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

    • 參數query:刪除文檔的條件

    • 參數justOne:設置為true或者1,刪除一條;默認false刪除多條


查詢數據

  • 基本查詢
    • 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 pymongo
import requests
from 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)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容