使用homebrew安裝
brew install mongodb
配置
1.系統(tǒng)根目錄下創(chuàng)建文件夾
~ sudo mkdir -p /data/db
2.給data/db文件夾賦予權(quán)限
~ whoami
apple
~ sudo chown apple /data/db
3.添加環(huán)境變量(這里用的zsh終端,所以配置zsh文件)
vim ~/.zshrc
寫(xiě)入 export PATH=/usr/local/Cellar/mongodb/4.0.4_1/bin:${PATH}
~ source ~/.zshrc
讓其生效
啟動(dòng)
~ mongod
新建一個(gè)終端
~ mongod -version
// db version v4.0.3
~ mongo
// 進(jìn)入數(shù)據(jù)庫(kù)
db.shutdownServer()
// 退出
操作命令
查看數(shù)據(jù)庫(kù): show dbs
選擇要操作的數(shù)據(jù)庫(kù):use DBNAME(數(shù)據(jù)庫(kù)名字)
查看集合:show collections
查看集合里面的內(nèi)容:db.COLLECTIONNAME(集合名字).find();
查看當(dāng)前操作的數(shù)據(jù)庫(kù):db 或者 db.getName()
創(chuàng)建數(shù)據(jù)庫(kù):use 要?jiǎng)?chuàng)建的數(shù)據(jù)名
數(shù)據(jù)的添加:db.COLLECTIONNAME(集合名字).insert({name:"張三",age:19})
數(shù)據(jù)操作
增加:db.COLLECTIONNAME.insert({name:"張三",age:19});
sava添加操作
db.COLLECTIONNAME.sava({name:"李四",age:18});
sava更新操作
db.COLLECTIONNAME.save({ "_id" : ObjectId("5a67e9b5abb73ea4bf24d0f0"), "name" : "張三2", "age" : 20 })
刪除:remove()
db.COLLECTIONNAME.remove({name:"張三"},{配置項(xiàng)(可選)})
注意:updata默認(rèn)是只會(huì)更新符合條件的多條數(shù)據(jù)中的一條數(shù)據(jù),remove默認(rèn)配置是只會(huì)刪除符合條件數(shù)據(jù)的所有數(shù)據(jù)
// 數(shù)據(jù)查詢
db.COLLECTIONNAME.find({條件},{字段})
eg: 查詢數(shù)據(jù)庫(kù)中大于30歲的人
db.COLLECTIONNAME.find({age:{$gt:18}})
條件查詢
大于 gt
小于 lt
大于等于 gte
不等于 ne
等于 :
正則
eg:
db.COLLECTIONNAME.find({name:/^王/}) //查詢所有以王 開(kāi)頭的name
且
直接用逗號(hào)隔開(kāi)
db.COLLECTIONNAME.find({name:"張三", age:19})
或 $or
db.COLLECTIONNAME.find({$or:[{age: 19},{age:18}]})
分頁(yè)
skip()
限制條數(shù)
limit()
排序
sort()
匯總數(shù)
count()
MongoDB
-
一個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)多個(gè)集合
- 一個(gè)集合對(duì)應(yīng)多個(gè)文檔對(duì)象
- 在mongo中不論是db還是集合,你都無(wú)需去創(chuàng)建他
- 直接就當(dāng)他已經(jīng)存在,直接Use來(lái)使用
- use db名稱;
- 接著會(huì)被切換到該db中
-
db.要?jiǎng)?chuàng)建的集合名稱.save({});這樣集合就被創(chuàng)建了
- use db名稱;
解決32位異常
mongod --dbpath="路徑" --journal --storageEngine=mmapv1
-
1:啟動(dòng)服務(wù)器
-
mongod --dbpath "D:/mongodb/db"// 目錄一定要存在自己創(chuàng)建隨便名稱‘- 盡量設(shè)置在非系統(tǒng)盤(pán)
C盤(pán)生成目錄是需要權(quán)限的
- 盡量設(shè)置在非系統(tǒng)盤(pán)
- 如果看到
waiting for connections on port 27017說(shuō)明服務(wù)已經(jīng)啟動(dòng)
-
-
客戶端連接服務(wù)器另開(kāi)一個(gè)命令行
-
mongo默認(rèn)連接的是test數(shù)據(jù)庫(kù)
-
-
查詢有哪些數(shù)據(jù)庫(kù)
- 查詢數(shù)據(jù)庫(kù):
show dbs; - 切換數(shù)據(jù)庫(kù):
use 數(shù)據(jù)庫(kù)名;
- 查詢數(shù)據(jù)庫(kù):
-
查詢當(dāng)前db下有哪些集合
show collections;
-
查詢數(shù)據(jù):
-
db.集合名.find();//查詢出來(lái)的是文檔對(duì)象 document db.users.find();
-
-
添加數(shù)據(jù):
-
db.集合名.save(對(duì)象)//mongo默認(rèn)會(huì)給我們加入_id作為該文檔對(duì)象的唯一標(biāo)識(shí) db.users.save({contry:'中國(guó)',name:'小明',score:77});
-
-
刪除數(shù)據(jù):
-
db.集合名.remove(條件對(duì)象);//條件匹配就會(huì)被刪除 db.users.remove({name:'小明'});- 如果給定一個(gè)空對(duì)像,會(huì)匹配全部
-
-
更新數(shù)據(jù):
db.集合名.update({匹配條件對(duì)象},{$set:{修改后的對(duì)象}});db.users.update({name:'小明'},{$set:{contry:'印度'}});;
條件查詢
練習(xí):
查詢姓名為小明的學(xué)生
db.users.find({name:'小明'});; 查詢英語(yǔ)成績(jī)大于90分的同學(xué)
db.users.find({score:{$gt:90}}); //查找成績(jī)大于90分$gt
//$lt小于
查詢數(shù)學(xué)成績(jī)不等于88的同學(xué)
db.users.find({score:{$ne:88}}); 查詢總分大于200分的所有同學(xué)
db.users.find({score:{$gt:200}});
分頁(yè)
db.users.find().skip(3).limit(3);- db.集合名稱.find().跳到3.顯示3條
+ limit 0,3
排序
db.users.find().sort({key:排序方式});-
db.users.find().sort({'score':1});//正數(shù)代表升序,負(fù)數(shù)代表降序
模糊匹配
db.users.find({name:{$regex:'小'}});db.users.find({name:{$regex:'明'}});
聚合函數(shù)
- 需要求當(dāng)前集合的記錄數(shù):
db.users.find().count();- 求最大值
-求整個(gè)集合的總成績(jī)
+ db.集合名.聚合({ 組的劃分規(guī)則{_id:'1',顯示內(nèi)容:{score'}} })
- 求所有人的平均分
db.users.aggregate({$group:{_id:'1',sumscore:{$avg:'$score' } }});
- 求按國(guó)家分組,求所有國(guó)家的總分
db.users.aggregate({$group:{_id:'$contry',sumScore:{$sum:'$score'}}});
- 求所有人的平均分
- 添加基礎(chǔ)數(shù)據(jù):
db.users.save({contry:'中國(guó)',name:'小明',score:77});
db.users.save({contry:'中國(guó)',name:'小紅',score:88});
db.users.save({contry:'中國(guó)',name:'小張',score:99});
db.users.save({contry:'美國(guó)',name:'jack',score:45});
db.users.save({contry:'美國(guó)',name:'rose',score:67});
db.users.save({contry:'美國(guó)',name:'mick',score:89});
聯(lián)合查詢
db.orders.insert([
{ "_id" : 1, "item" : "almonds", "price" : 12, "quantity" : 2 },
{ "_id" : 2, "item" : "pecans", "price" : 20, "quantity" : 1 },
{ "_id" : 3 }
]);
db.inventory.insert([
{ "_id" : 1, "sku" : "almonds", description: "product 1", "instock" : 120 },
{ "_id" : 2, "sku" : "bread", description: "product 2", "instock" : 80 },
{ "_id" : 3, "sku" : "cashews", description: "product 3", "instock" : 60 },
{ "_id" : 4, "sku" : "pecans", description: "product 4", "instock" : 70 },
{ "_id" : 5, "sku": null, description: "Incomplete" },
{ "_id" : 6 }
]);
db.orders.aggregate([
{
$lookup:
{
from: "inventory",
localField: "item",
foreignField: "sku",
as: "inventory_docs"
}
}
]);