mongo-安裝配置和使用(常用指令)以及增刪改查
mongoDB 資料庫
一. 安裝 mongoDB
1. 官網地址:https://www.mongodb.com/
2. 選擇 custome
3. 修改安裝地址 C:\MongoDB
4. 修改環境變數 找到 bin 路徑 C:\MongoDB\bin 配置到全域性環境變數
二. 啟動mongo
按照下列方法依此操作
1. 進入mongoDB 目錄 ,新建 data ,儲存資料 2. 進入 data, 在data內新建 db 資料夾 儲存資料庫資料 3. 執行 mongod --dbpath C:\MongoDB\data\db 4. port 27017 瀏覽器輸入 http://localhost:27017/ 成功開啟 5. 新建cmd 輸入 mongo 進入mongoDB Shell
三. 建立 MongoDB 服務 (必須管理器許可權)
1. 切換到 Mongodb 的 data 下,新建一個log 資料夾 ,儲存登入日誌 2. 切換到 data 下的 log ,新建 一個檔案 mongo.log 儲存登入日誌 3. 切換到 C:\MongoDB 新建 mongo.config 配置檔案 dbpath=C:\MongoDB\data\db logpath=C:\MongoDB\data\log\mongo.log 4. 新建cmd 輸入 mongod --config C:\MongoDB\mongo.config (啟動mongodb) 5. 建立 mongodb 服務 mongod --config C:\MongoDB\mongo.config --install --serviceName "MongoDB" (必須管理員 ) 6. 啟動 mongodb 服務 net start MongoDB net stop MongoDB SC delete MongoDB 刪除MongoDB 服務 檢視 services.msc
四. mognodb
MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。它的特點:高效能、易部署、易使用,儲存資料非常方便。
SQL | mongodb |
---|---|
database | database/db |
table 表 | collection 集合 |
row 行 | document 文件 |
column 列 | field 域名 |
index | index |
table join | 不支援 |
primary key | _id |
1、collection 集合
集合存在於資料庫中,集合沒有固定的結構,這意味著你在對集合可以插入不同格式和型別的資料,但通常情況下我們插入集合的資料都會有一定的關聯性。
2、 document 文件
文件是一個鍵值(key-value)對(即BSON)。MongoDB 的文件不需要設定相同的欄位,並且相同的欄位不需要相同的資料型別,這與關係型資料庫有很大的區別,也是 MongoDB 非常突出的特點
資料型別
string
integer
boolean
double
array
max min(key)
timestamp
object
null
symbol
常用指令
mongo 進入mongodb Shell
show dbs 顯示所有的資料庫
db 檢視當前資料庫
db.getName()
use cd1706 建立或者切換資料庫
檢視命令提示
help
db.help()
db.test.help()
db.test.find().help()
顯示當前DB狀態
db.stats()
檢視當前DB版本
db.version()
檢視當前DB的連結機器地址
db.getMongo()
刪除資料庫
db.dropDatabase()
db.getName() == db
db.getCollectionNames() == show collections
db.createCollection("music");
show collections 顯示當前資料庫內的集合
db.emp.save() 儲存資料 如果第一次就是直接建立集合
db.userinfo.insert()
建立一個聚集集合
db.createCollection("collName", {size: 20, capped: true, max: 100});
db.collName.isCapped(); //判斷集合是否為定容量
得到指定名稱的聚集集合
db.getCollection("account");
得到當前db的所有聚集集合
db.getCollectionNames(); 返回是陣列
顯示當前db所有聚集的狀態
db.printCollectionStats();
MongoDB 增刪改查
查 find findOne
增 insert({},[]) insertOne insertMany save()
改 update updateOne updateMany
刪除 deleteOne deleteMany remove
插入
db.userinfo.insert() db.userinfo.insert({username:"mingming"}) db.userinfo.insert([{username:"huahua"},{username:"pengzhan"}])
db.userinfo.insertOne() obj 只能插入一條資料
db.userinfo.insertMany() array 只能接受陣列
db.userinfo.save() 類似 insert
修改 update
db.test.update(query,object);
db.user.update(
{
username:"wh1803"
},
{
$set:{
}
}
)
db.userinfo.update({username:"mingming"},{
$set:{
password:"abc123"
}
}
db.userinfo.update({password:"123"},{
$set:{
username:"zuozuomu"
}
})
db.user.update(
{password:"abc123"},
{$set:{
username:"dadazuo"
}}
)
修改第一條資料
db.userinfo.update({},{
$set:{
password:"abc123"
}
})
db.userinfo.update({username:"cd1706"},{
$set:{
password:"abc123"
}
},true);
能不能查詢到 (查不到)
true 查不到就直接插入
false 查不到就不插入 預設為false
修改多條資料
db.userinfo.update({},{
$set:{
password:"abcd12456"
}
},true,true);
true 表示修改滿足條件的所有資料 updateMany
false 表示修改滿足條件的第一條資料 updateOne 預設false
db.userinfo.updateOne({
},{
$set:{
age:28
}
});
db.userinfo.updateMany({},{
$inc:{
age:12
}
});
刪除 deleteOne
db.userinfo.deleteOne({
username:"zuozuomu"
}) 刪除一條資料
db.userinfo.deleteMany() 刪除多條資料
db.userinfo.remove(query) 刪除所有滿足條件 的 文件
db.userinfo.remove(query,n); 表示刪除的資料量 n 只能刪除一條資料 第一條資料
db.userinfo.drop(); 刪除集合 collection
db.users.findAndModify({
query: {age: {$gte: 25}},
sort: {age: -1},
update: {$set: {name: 'a2'}, $inc: {age: 2}},
remove: true
});
db.userinfo.findAndModify({
query:{username:"pengzhan"},
sort:{age:-1},
update:{
$set:{
tel:13812341234,
},
$inc:{
age:16
}
},
remove:false
})
查詢 find
db.userinfo.find() 查詢所有 select * from userinfo where password = "abc123";
db.userinfo.find({query},{field})
db.userinfo.find({username:"pengzhan"})
db.userinfo.find({username:"pengzhan"},{username:1,_id:0,password:1}); 1表示顯示 0不顯示
db.userinfo.find({age:24})
去重查詢
db.user.distinct("password")
select distinct password from user;
範圍查詢
$gt great then > 大於
$gte great then equal >= 大於或等於
$lt less then < 小於
$lte less then equal <= 小於或等於
db.userinfo.find({
age:{$gt:25}
})
db.userinfo.find({
age:{$gt:20,$lte:30}
})
$set
$inc
$or or
db.user.find(
{
$or:[
{
username:"pengzhan"
},
{
age:{
$lte:40
}
}
]
},
{
_id:0
}
)
模糊查詢 like
db.userinfo.find({username:/^hua/});
db.userinfo.find({username:/^hua$/});
db.userinfo.find({username:/hua4$/});
var txt = search
new RegExp("+txt+"$")
new RegExp("hua4$");
db.userinfo.find({username:new RegExp("^hua")}); //常用語句
db.movie.find({query},{field}) query 查詢條件 field 查詢的欄位
db.movie.find({},{title:1,year:1})
select title ,year from movie;
db.movie.find({},{title:1,year:1,_id:0}) 1 顯示 0 不顯示
db.movie.find({},{title:1,_id:0,genres:1})
db.movie.find({},{title:1,_id:0,"rating.average":1})
db.movie.find({year:{$gt:"1994",$lt:"2017"}},{title:1,year:1,_id:0})
db.movie.find({year:"1994"},{title:1,year:1,_id:0,genres:1});
db.movie.find({"rating.average":{$gte:9.3}},{year:1,title:1,_id:0,'rating.average':1})
db.movie.find({"rating.average":{$gte:9.3},year:"1994"},{year:1,title:1,_id:0,'rating.average':1})
db.movie.find({},{year:1,title:1,"directors.name":1});
排序
db.movie.find({},{year:1,title:1,_id:0}).sort({year:1}) 1 表示升序
db.movie.find({},{year:1,title:1,_id:0}).sort({year:-1}) -1 降序
db.movie.find({},{year:1,title:1,_id:0,"rating.average":1}).sort({year:-1,"rating.average":-1})
db.movie.find({},{year:1,title:1,_id:0,"rating.average":1}).sort({year:-1,"rating.average":1})
限制條數 limit
db.movie.find({},{year:1,title:1,_id:0}).limit(10);
跳過 skip
db.movie.find({},{year:1,title:1,_id:0}).skip(5);
db.movie.find({},{year:1,title:1,_id:0}).skip(5).limit(10);
db.movie.find({},{year:1,title:1,_id:0}).limit(10).skip(5);
長度 條數 count 所有集合資料 size 滿足條件的集合資料
db.movie.find({},{year:1,title:1,_id:0}).size();
db.movie.find({},{year:1,title:1,_id:0}).count()
db.movie.find({},{year:1,title:1,_id:0}).skip(5).size();
db.movie.find().skip(5).count()
最大值
db.movie.find({},{year:1,title:1,_id:0}).max({"rating.average"})
db.movie.find({},{year:1,title:1,_id:0}).min({"rating.average"})
db.movie.aggregate({$group:{"_id":"min",min_value:{$min:'$year'}}})
db.movie.aggregate({$group:{'_id':"max",max_value:{$max:'$year'}}})
db.movie.aggregate({$group:{"_id":"year",max_value:{$max:"$year"}}})
db.movie.aggregate({$group:{"_id":"year",min_value:{$min:"$year"}}})
db.movie.aggregate({$group:{_id:"rating.average",max_value:{$max:"$rating.average"}}})
db.movie.find({},{year:1,title:1,_id:1}).sort({year:-1}).limit(1)
or $or 查詢
select * from userinfo where age = 22 or age =28;
select * from userinfo where age in (22,28);
db.movie.find({$or:[{year:"1994"},{year:"1997"}]},{year:1,title:1,_id:0})
and 查詢
db.movie.find({year:"1994","rating.average":9.6},{year:1,title:1,_id:0})
判斷 列 field 是否存在
db.movie.find({year:{$exists:true}},{year:1,title:1,_id:0})
db.movie.find({year11:{$exists:true}},{year:1,title:1,_id:0})
$in 包含
db.movie.find({genres:{$in:["犯罪"]}},{year:1,title:1,genres:1,_id:0})
#### in
select * from movie where genres in [ "犯罪"] / [50,90]
#### $nin 不包含
db.movie.find({genres:{$nin:["劇情"]}},{year:1,title:1,genres:1,_id:0})
in
$inc ++ update
db.movie.update({},{
$inc:{
year:"1"
}
})