1.Mongodb下載安裝
官方網站
注意:偶數為穩定版,如1.6,奇數為開發版,如1.7
1.1Windows下Mongodb安裝
直接下載msi文件或者點擊All Verison Binaries下載都行
這里用的是zip安裝,安裝完畢后
mongo文件夾中創建db文件夾和log文件夾
先進入mongodb安裝的位置,在此處打開cmd窗口輸入命令啟動數據庫
mongod --dbpath D:\軟件安裝\MongoDB\data\db(此處是db的路徑)
打開一個新的窗口輸入命令mongo,用于數據庫操作
1.2.ubuntu上安裝Mongodb
1.打開終端輸入一下命令:
sudo apt-get install mongodb
2.查看版本:
mongo -version
3.啟動數據庫
sudo mongo
1.3.安裝pymongo
PyMongo是Mongodb的Python接口開發包,是使用python和Mongodb的推薦方式。
用Python操作MongoDB需要通過PyMongo,輸入命令安裝
pip install pymongo 默認安裝
pip install pymongo==2.8 安裝指定版本
pip install –upgrade pymongo 升級PyMongo
2.Mongodb簡介
什么是NoSQL數據庫
·數據庫:進行高效的、有規則的進行數據持久化存儲的軟件
·NoSQL:指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。
NoSQL用于超大規模數據的存儲。(例如谷歌或Facebook每天為他們的用戶收集萬億比特的數據)。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。
·NoSQL數據庫:Notonly sql,指代非關系型數據庫
·優點:高可擴展性、分布式計算、低成本、靈活架構、半結構化數據庫、簡化關聯關系
·缺點:沒有標準化、有限查詢、不直觀
常見NoSQL數據庫
·列儲存:Hbase、Cassandra、Hypertable
·文檔存儲:MongoDB、CouchDB
·K-V存儲:TokyCabinet、BerkeleyDB、MencacheDB、redis
·對象存儲:Neo4j、Versant
·Xml數據庫:BerkeleyDB、Basex
3、MongoDB概述
·MongoDB 是一個機遇分布式文件存儲的NoSQL數據庫
·C++編寫的運行穩定性能高得數據庫
模式自由
面向集合
完整索引支持
復制和高可用性
more...
3.1Mongodb術語解釋
·database-database:數據庫
·table-collection:數據庫表-集合
·row-document:數據記錄-文檔
·column-field:數據字段-域
·index-index:索引-索引
·table-join-None:表連接
·primary key-primary key:主鍵
3.2MongoDB基本語法——數據類型
Paste_Image.png
·集合就是關系型書庫中的表
·文檔對應關系型數據庫中的行
·文檔:就是一個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:日期時間
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)