一、下載下傳檔案,提供兩種方式
1.網盤連結如下,裡面有兩個檔案。一個是3.6.10綠色壓縮檔案,一個是包含3.4.2安裝版本和RoBoMongo的可視化工具,根據需要選擇。
連結:https://pan.baidu.com/s/1cBQseVXbYfqRVpek_e52fw
提取碼:mtoq
2.官網下載下傳,在官網找到自己想要的版本進行下載下傳
連結:https://www.mongodb.com/download-center/community
二、安裝、配置(這裡以綠色壓縮版為例)
1、将解壓内容複制到自己在磁盤中建立的新檔案夾MongoDB中并建立一個data檔案夾和log檔案夾
2、配置環境變量,在系統變量中為Path新增一個變量,值為剛剛複制到MongoDB檔案夾中的bin檔案位址
3、以管理者運作cmd,建立mongodb服務
輸入:sc create MongoDB binpath=“E:\MongoDB\bin\mongod.exe --dbpath E:\MongoDB\data --logpath E:\MongoDB\log\log.log --logappend --service”
根據自己檔案夾位置進行更改
4、登入并建立root權限使用者
C:\WINDOWS\system32>mongo
進入後按截圖操作:
db.createUser({user:“root”,pwd:“123456”,roles:[{role:“root”,db:“admin”}]})
5、Ctrl+d退出後,關閉服務,進行登入驗證設定
1.先輸入net stop MongoDB 把服務停止
2.輸入sc delete MongoDB 删除這個服務
3.以auth的方式注冊服務:sc create MongoDB binpath=“D:\MongoDB\bin\mongod.exe --dbpath D:\MongoDB\data --logpath D:\MongoDB\log\log.log --logappend --auth --service”
4.啟動服務net start MongoDB
sc create MongoDB binpath=“E:\MongoDB\bin\mongod.exe --dbpath E:\MongoDB\data --logpath E:\MongoDB\log\log.log --logappend --auth --service”
5、驗證是否成功
兩種登入方式:
1.直接敲mongo進入,但沒有權限,use admin 後敲db.auth(“root”,“123456”)驗證,之後就有權限了。
效果圖:
2.直接敲mongo -u root -p 然後輸入密碼進入,直接有權限
三、基礎知識筆記
資料庫操作
1.檢視目前資料庫名稱
db
2.檢視所有資料庫名稱
列出所有在實體上存在的資料庫:
show dbs
3.切換資料庫
如果資料庫不存在,則指向資料庫,但不建立,直到插入資料或建立集合時資料庫才被建立
use 資料庫名稱
預設的資料庫為test,如果你沒有建立新的資料庫,集合将存放在test資料庫中
4.删除目前指向的資料庫
如果資料庫不存在,則什麼也不做
db.dropDatabase()
集合操作
1.建立集合
db.createCollection(name, options)
name是要建立的集合的名稱
options是一個文檔,用于指定集合的配置
選項參數是可選的,是以隻需要到指定的集合名稱。
參數capped:預設為false表不設上限,值為true表設上限
參數size:當capped值為true時,表示上限大小,當文檔達到上限時,會将之前的資料覆寫,機關為位元組
例2:db.createCollection("sub", { capped : true, size : 10 } )
2.檢視目前資料庫的集合
show collections
3.删除
db.集合名稱.drop()
資料類型
下表為MongoDB中常用的幾種資料類型:
Object ID:文檔ID
String:字元串,最常用,必須是有效的UTF-8
Boolean:存儲一個布爾值,true或false
Integer:整數可以是32位或64位,這取決于伺服器
Double:存儲浮點值
Arrays:數組或清單,多個值存儲到一個鍵
Object:用于嵌入式的文檔,即一個值為一個文檔
Null:存儲Null值
Timestamp:時間戳
Date:存儲目前日期或時間的UNIX時間格式
object id
每個文檔都有一個屬性,為_id,保證每個文檔的唯一性
可以自己去設定_id插入文檔
如果沒有提供,那麼MongoDB為每個文檔提供了一個獨特的_id,類型為objectID
objectID是一個12位元組的十六進制數
前4個位元組為目前時間戳
接下來3個位元組的機器ID
接下來的2個位元組中MongoDB的服務程序id
最後3個位元組是簡單的增量值
插入資料
db.集合名稱.insert(document)
插入文檔時,如果不指定_id參數,MongoDB會為文檔配置設定一個唯一的ObjectId
簡單查詢
db.集合名稱.find()
更新
db.集合名稱.update(
<query>,
<update>,
{multi: <boolean>}
)
參數query:查詢條件,類似sql語句update中where部分
參數update:更新操作符,類似sql語句update中set部分
參數multi:可選,預設是false,表示隻更新找到的第一條記錄,值為true表示把滿足條件的文檔全部更新
例3:全文檔更新
db.stu.update({name:'hr'},{name:'mnc'})
例4:指定屬性更新,通過操作符$set
db.stu.insert({name:'hr',gender:0})
db.stu.update({name:'hr'},{$set:{name:'hys'}})
例5:修改多條比對到的資料
db.stu.update({},{$set:{gender:0}},{multi:true})
儲存
db.集合名稱.save(document)
如果文檔的_id已經存在則修改,如果文檔的_id不存在則添加
例6
db.stu.save({_id:'20160102','name':'yk',gender:1})
例7
db.stu.save({_id:'20160102','name':'wyk'})
删除
db.集合名稱.remove(
<query>,
{
justOne: <boolean>
}
)
參數query:可選,删除的文檔的條件
參數justOne:可選,如果設為true或1,則隻删除一條,預設false,表示删除多條
例8:隻删除比對到的第一條
db.stu.remove({gender:0},{justOne:true})
例9:全部删除
db.stu.remove({})
資料查詢
方法find():查詢
方法findOne():查詢,隻傳回第一個
方法pretty():将結果格式化
比較運算符:①小于$lt
②小于或等于$lte
③大于$gt
④大于或等于$gte
⑤不等于$ne
邏輯運算符:,隔開預設為and
邏輯或:使用$or
範圍運算符:使用"$in","$nin" 判斷是否在某個範圍内
例如:{$in:[1,2,3,4]}
使用//或$regex編寫正規表達式
例如:{name:/.*/} {name:{$regex:".*"}}
函數查詢:使用$where後面寫一個函數,傳回滿足條件的資料
例如:{$where:function(){return this.age>20}
其他
方法limit():用于讀取指定數量的文檔
db.集合名稱.find().limit(NUMBER)
方法skip():用于跳過指定數量的文檔
db.集合名稱.find().skip(NUMBER)
方法sort(),用于對結果集進行排序
db.集合名稱.find().sort({字段:1,...})
方法count()用于統計結果集中文檔條數
db.集合名稱.find({條件}).count()
方法distinct()對資料進行去重
db.集合名稱.distinct('去重字段',{條件})
聚合
聚合(aggregate)主要用于計算資料,類似sql中的sum()、avg()
db.集合名稱.aggregate([{管道:{表達式}}])
常用管道
$group:将集合中的文檔分組,可用于統計結果
$match:過濾資料,隻輸出符合條件的文檔
$project:修改輸入文檔的結構,如重命名、增加、删除字段、建立計算結果
$sort:将輸入文檔排序後輸出
$limit:限制聚合管道傳回的文檔數
$skip:跳過指定數量的文檔,并傳回餘下的文檔
$unwind:将數組類型的字段進行拆分
常用表達式
$sum:計算總和,$sum:1同count表示計數
$avg:計算平均值
$min:擷取最小值
$max:擷取最大值
$push:在結果文檔中插入值到一個數組中
$first:根據資源文檔的排序擷取第一個文檔資料
$last:根據資源文檔的排序擷取最後一個文檔資料
安全
常用系統角色如下:
root:隻在admin資料庫中可用,超級賬号,超級權限
Read:允許使用者讀取指定資料庫
readWrite:允許使用者讀寫指定資料庫
建立超級管理使用者
use admin
db.createUser({
user:'admin',
pwd:'123',
roles:[{role:'root',db:'admin'}]
})
備份與恢複
備份:mongodump -h dbhost -d dbname -o dbdirectory
恢複:mongorestore -h dbhost -d dbname --dir dbdirectory
與python互動
下載下傳pymongo
1.導包pymongo
import pymongo
2.連接配接,建立用戶端
client=pymongo.MongoClient("localhost", 27017)
3.獲得資料庫test1
db=client.test1
4.獲得集合stu
stu = db.stu
添加文檔
s1={name:'gj',age:18}
s1_id = stu.insert_one(s1).inserted_id
查找一個文檔
s2=stu.find_one()
查找多個文檔1
for cur in stu.find():
print cur
查找多個文檔2
cur=stu.find()
cur.next()
cur.next()
cur.next()
擷取文檔個數
print stu.count()