mongoDB的安裝及基本使用

來源:互聯網
上載者:User

標籤:src   msi   簡介   空值   穩定性   one   objectid   none   屬性   

1.mongoDB簡介1.1 NoSQL資料庫
  • 資料庫:進行高效的、有規則的進行資料持久化儲存的軟體

  • NoSQL資料庫:Not only sql,指代非關係型資料庫

    • 優點:高可擴充性、分散式運算、低成本、靈活架構、半結構化資料、簡化關聯關係

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

  • 常見NoSQL資料庫

    • 列儲存:Hbase、Cassandra、Hypertable

    • 文檔儲存:MongoDB、CouchDB

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

    • Object Storage Service:Neo4J、Versant

    • Xml資料庫:BerkeleyDB、BaseX

註:黑色加粗的為常用的資料庫

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基本文法——資料類型
  • 集合就是關係型書庫中的表

  • 文檔對應關係型資料庫中的行

  • 文檔:就是一個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.Mongodb下載安裝
  • 官方網站
    注意:偶數為穩定版,如1.6,奇數為開發版,如1.7
2.1.Windows下Mongodb安裝

直接下載msi檔案或者點擊All Verison Binaries下載都行

我這裡用的是zip安裝,安裝完畢後,


mongo檔案夾中建立db檔案夾和log檔案夾
  • 在cmd視窗輸入命令啟動資料庫
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.基本操作
  • mongoDB將資料存放區為一個文檔

  • 資料由 key=value 的索引值對的形式組成

  • 資料的操作:增刪改查

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

4.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 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的安裝及基本使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.