MongoDB
一 開啓MongoDB服務 並進入數據庫
(1) 開啓一個終端
>cd MongoDB的bin目錄python
cd C:\mongodb\binmongodb
>mongod.exe --dbpath=數據庫存放的路徑數據庫
mongod.exe --dbpath=C:\Users\xlg\PycharmProjects\pythonsh1702\day18\dbjson
(2) 在開啓一個終端
>cd MongoDB的bin目錄數組
cd C:\mongodb\bin數據結構
>mongo.exe函數
二 MongoDB
MongoDB將數據存儲爲文檔,數據結構由key=>value 組成 MongoDB文檔相似於json 字段值能夠包含其餘的文檔或者是數組spa
存儲的概念(區別)
SQL術語/概念 | MongoDB的術語/概念 | 解釋/說明 |
---|---|---|
database | database | 數據庫 |
table | collection | 數據庫表/集合 |
row | document | 行/文檔 |
column | field | 數據字段/域 |
primary key | primary key | 主鍵索引/MongoDB自動將_id設置爲主鍵索引 |
三 對於庫的操做
-
查看全部的庫rest
show dbscode
-
選擇數據庫(庫存在就選擇 不存在就建立)use 庫名
當不存在的庫建立之後 使用show dbs查看不到的 可是 將當前的庫裏面建立一個集合當前的庫就會顯示出來
-
查看當前所在的數據庫
db.getName()
注意:
MongoDB 嚴格區分大小寫
四 對於集合的操做
-
建立集合
db.createCollection('集合名稱')
db.createCollection('user') #建立一個叫user的集合
-
查看全部的集合
show conllections
-
刪除集合
db.集合名.drop()
db.user.drop() #刪除user集合
五 INSERT/SAVE 文檔的添加
(1) insert 添加文檔(添加一條)
db.集合名.insert(文檔)
db.user.insert({"name":"張三"})
(2) 插入多條數據
db.集合名.insert([文檔1,文檔2...])
db.user.insert([{name:"李四",age:20,hobby:"寫代碼"},{age:18,name:"王五"}])
注意:
若是添加多條文檔的時候 []忘記添加 則默認添加第一條文檔
(3) save 添加數據
db.user.save({ "name" : "王六" })
(4) save 修改數據(更確切的說 文檔的覆蓋)
db.user.save({ "_id" : ObjectId("5a1fb5eb9c1f997934c661d4"), "name" : "王六" })
3.2新版本的建議添加
db.collection.insertOne() 添加一條文檔
db.collection.insertMany() 添加多條文檔
多條文檔依然使用[]來添加 不然報錯
六 UPDATE修改
db.collection.update(
query,條件
update,
修改的操做符:
1.$inc 累加修改
2.$set 直接修改
{
upsert:boolean,#true 做爲新數據插入 默認FALSE
multi:boolean #true,false #true修改所有 默認是FALSE 只修改一條
}
)
主體結構:
db。collection.update({條件},{$set/$inc:{key:value}})
db.user.update({name:"張三"},{$inc:{age:2}})
upsert 的操做
db.user.update({name:"張三四"},{$set:{age:2}},{upsert:true})
multi 的操做
db.user.update({name:"張三"},{$set:{age:12}},{multi:true})
upsert 和 multi的組合寫法
db.user.update({name:"張三"},{$set:{age:12}},true/false,true/false)
3.2之後 建議
db.collection.updateOne() 只修改一條
db.collection.updateMany() 修改多條
七 FIND查詢
(1) find 查詢全部
db.collection.find() #默認查詢全部
db.collection.find({條件},{field:0/1}) #要求那些字段顯示或者不顯示
0 表明除了它之外的field都顯示
1 表明只顯示當前的field
錯誤的寫法
db.user.find({},{name:1,age:0})
正確的寫法
db.user.find({},{name:1,_id:0})
(2) findOne 查看一條數據
db.collection.findOne({條件},{field:1/0})
(3) count 統計條數
db.collection.find({條件},{field:0/1}).count()
(4) pretty 展開查看
db.user.find().pretty()
(5) 查詢條件的操做符
1 $gt > db.collection.find({age:{$gt:10}})
2 $gte >= db.collection.find({age:{$gte:10}})
3 $lt < db.collection.find({age:{$lt:10}})
4 $lte <= db.collection.find({age:{$lte:10}})
5 $ne != db.collection.find({age:{$ne:10}})
6 {field:值} db.collection.find({age:10})
7 使用id來查詢 ObjectId("5a1fb8b29c1f997934c661d9")
8 /數據/ 模糊查詢 db.collection.find({name:/張/})
9 /^數據/ 以...做爲開頭 db.collection.find({name:/^張/})
10 /數據$/ 以...結尾 db.collection.find({name:/張$/})
11 $in 在...以內 db.collection.find({age:{$in:[10,20,30]}})
12 $nin 不在...以內 db.collection.find({age:{$nin:[10,20,30]}})
(6) and查詢
db.collection.find({key1:val1,key2:val2......})
db.user.find({name:/張/,age:{$gte:10,$lte:20}})
錯誤的寫法
db.user.find({name:"張三",name:"李四"}) #前面的name被後面的覆蓋了
(7) or 的查詢
db.collection.find({$or:[{條件1,條件2...}]})
db.user.find({$or:[{name:"張三"},{name:"李四"}]}) #查詢name爲張三或者李四的全部文檔
#查詢name爲李四 年齡大於10 或 小於20
(8) and 和 or的組合寫法
db.collection.find({條件1,條件2..,$or:[{條件1},{條件2}...]})
db.user.find({name:"張三",$or:[{age:{$gte:10}},{age:{$lte:20}}]}) #查詢name爲張三 而且 年齡爲大於等於10或者小於等於20
(9) limit 取值
db.collection.find().limit(num)
db.user.find().limit(3) #從0開始去三條數據
(10) skip 跳過幾條數據
db.collection.find().skip(num) #查詢數據 跳過num條
一般和limit配合使用
db.collection.find().skip(num).limit(num) #跳過幾條數據取幾條
(11) sort 排序
db.collection.find().sort({age:1/-1}) #查詢數據升序或者降序
db.user.find().sort({age:-1}).limit(1) #取出年齡最大的一條文檔
八 REMOVE刪除
db.collection.remove({條件},1)
(1) 默認刪除全部
db.collection.remove({條件}) #刪除全部匹配到的文檔
(2) 只刪除一條文檔
刪除一條
db.user.remove({name:"張三"},1)
db.user.remove({name:"張三"},{justOne:true})
(3) 刪除全部文檔
db.collection.remove({})
3.2版本之後的建議刪除的函數
db.collection.deleteOne()
db.collection.deleteMany()
九 刪除數據庫
刪除以前最好去use一下(肯定刪除你當前所在的數據庫)
數據庫的退出
exit
十 數據庫的備份和恢復
備份:
先啓動MongoDB的服務
打開一個新的終端
cd ->MongoDB的bin目錄下
mongodump
恢復
先啓動MongoDB的服務
mongod.exe --dbpath=新的數據庫的路徑
打開一個新的終端
cd ->MongoDB的bin目錄下
mongorestore