mac安裝mongoDB及配置

使用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)建了
  • 解決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)限的
    • 如果看到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ù)名;
  • 查詢當(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)容:{sum:'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"
       }
  }
]);

參考
http://www.itdecent.cn/p/83e892ea242d

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容