MongoDB的入門

一、MongoDB數(shù)據(jù)庫的定義:

MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。

  • 在高負(fù)載的情況下,添加更多的節(jié)點(diǎn),可以保證服務(wù)器性能。
  • MongoDB 將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對(duì)組成。
  • MongoDB 文檔類似于 JSON 對(duì)象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。
  • MongoDB三元素: 數(shù)據(jù)庫、集合、文檔:
    1). 文檔,就是一個(gè)對(duì)象,由鍵值對(duì)構(gòu)成,是json的擴(kuò)展Bson形式 ,如:{'name':'guojing','gender':'男’}
    2). 集合:類似于關(guān)系數(shù)據(jù)庫中的表,儲(chǔ)存多個(gè)文檔,結(jié)構(gòu)不固定,如可以存儲(chǔ)如下文檔在一個(gè)集合中 {'name':'guojing','gender':'男'} {'name':'huangrong','age':18} {'book':'shu
    3). 一個(gè)mongodb中可以建立多個(gè)數(shù)據(jù)庫
    4). 數(shù)據(jù)庫:是一個(gè)集合的物理容器,一個(gè)數(shù)據(jù)庫中可以包含多個(gè)集合
    注意:MongoDB區(qū)分類型和大小寫; MongoDB的文檔不能有重復(fù)的鍵;

二、MongoDB數(shù)據(jù)庫的優(yōu)缺點(diǎn):

優(yōu)點(diǎn):
  • 文檔結(jié)構(gòu)的存儲(chǔ)方式,能夠更便捷的獲取數(shù)據(jù),快速,就地更新
  • 內(nèi)置GridFS,支持大容量的存儲(chǔ),海量數(shù)據(jù)下,性能優(yōu)越
  • 動(dòng)態(tài)查詢,全索引支持,擴(kuò)展到內(nèi)部對(duì)象和內(nèi)嵌數(shù)組
  • 查詢記錄分析,復(fù)制(復(fù)制集)和支持自動(dòng)故障恢復(fù)
  • 高效存儲(chǔ)二進(jìn)制大對(duì)象 (比如照片和視頻)
  • 支持復(fù)雜聚合
  • 自動(dòng)分片支持云級(jí)擴(kuò)展性,分片簡(jiǎn)單

缺點(diǎn):

  • 不支持事務(wù)操作,占用空間過大
  • 沒有如MySQL那樣成熟的維護(hù)工具
  • 無法進(jìn)行關(guān)聯(lián)表查詢,不適用于關(guān)系多的數(shù)據(jù)
  • 復(fù)雜聚合操作通過mapreduce創(chuàng)建,速度慢
  • 在刪除記錄后不會(huì)在文件系統(tǒng)回收空間。除非刪掉數(shù)據(jù)庫。但是空間沒有被浪費(fèi)

三、MongoDB的下載與安裝:

官方文檔安裝地址:
https://docs.mongodb.com/manual/installation/

Windowns 安裝 :
https://www.cnblogs.com/ymwangel/p/5859453.html

四、MongoDB啟動(dòng)服務(wù):

配置文件路徑:

  • 配置文件在/etc/mongod.conf
  • 默認(rèn)端口27017
    啟動(dòng)與退出:
  • 服務(wù)端開啟:sudo service mongod start
  • 停止服務(wù):sudo service mongod stop
  • 重啟服務(wù):sudo service mongod restart
  • 客戶端開啟:mongo
  • 退出連接:exit 或 ctrl+c

五、MongoDB 數(shù)據(jù)庫的基本操作:

  • 創(chuàng)建數(shù)據(jù)庫:
    use DATABASE_NAME
  • 查看數(shù)據(jù)庫
    查看當(dāng)前數(shù)據(jù)庫:db
    查看所有數(shù)據(jù)庫:show dbs

MongoDB 中默認(rèn)的數(shù)據(jù)庫為 test,剛創(chuàng)建的數(shù)據(jù)庫并不在數(shù)據(jù)庫的列表中,要顯示它,需要向創(chuàng)建的數(shù)據(jù)庫中插入一些數(shù)據(jù)。**

  • 刪除數(shù)據(jù)庫:
    db.dropDatabase()

刪除數(shù)據(jù)庫時(shí)需要切換到要?jiǎng)h除的數(shù)據(jù)庫,使用上面的命令才可以刪除。

六、MongoDB 文檔的基本操作:

1. MongoDB 使用 insert() 或 save() 方法向集合中插入文檔:
db.COLLECTION_NAME.insert(document)
db.collection.insertOne():向指定集合中插入一條文檔數(shù)據(jù)。
db.collection.insertMany():向指定集合中插入多條文檔數(shù)據(jù)。

例子:

 db.stu.insert({name: 'zhangsan',age:18})
  • 如果該集合不在該數(shù)據(jù)庫中, MongoDB 會(huì)自動(dòng)創(chuàng)建該集合并插入文檔。
  • 也可以使用 db.col.save(document) 命令插入文檔。如果不指定 _id 字段 save() 方法類似于 insert() 方法。如果指定 _id 字段,則會(huì)更新該 _id 的數(shù)據(jù)。

2. MongoDB 刪除文檔:
MongoDB remove()函數(shù)是用來移除集合中的數(shù)據(jù),但現(xiàn)在大多使用deleteOne() 和 deleteMany() 方法。

例子:

 db.col.deleteOne({ name: 'zhangsan',age:18 })

例子:

 db.col.deleteMany({ name: 'zhangsan',age:18 })

3. MongoDB 查詢文檔:
MongoDB 查詢文檔使用 find() 方法。

  • find() 方法以非結(jié)構(gòu)化的方式來顯示所有文檔。

  • pretty() 方法以格式化的方式來顯示所有文檔。
    語法格式:

     db.col.find().pretty()
    

七、MongoDB 邏輯與條件運(yùn)算:

1. MongoDB 條件運(yùn)算:
條件操作符用于比較兩個(gè)表達(dá)式并從MongoDB集合中獲取數(shù)據(jù)。
MongoDB中條件操作符有:

(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte

例子:

  db.col.find({age : {$gte : 18}})
  db.col.find({age : {$lte : 18}})
  db.col.find({age : {$lt : 18}})
  db.col.find({age : {$gt : 18}})

2. MongoDB 邏輯運(yùn)算:

  • MongoDB AND 條件

     db.col.find({key1:value1, key2:value2}).pretty()
    
  • MongoDB OR 條件

    >db.col.find(
          {
          $or: [
             {key1: value1}, {key2:value2}
           ]
          }
      ).pretty
    
  • MongoDB AND與OR 條件

    db.stu.find(
        {
            $or:[
                {age:{$gte:18}},
                {gender:1}
            ],
            name:'gj'
        }
    )
    
  • MongoDB In 條件
    使用" in","nin" 判斷是否在給出的判斷條件內(nèi) :與or方法類似。

    db.stu.find(
        {
            age:{$in:[18,28]}
        }
    )
    
  • MongoDB Limit與Skip方法
    limit() 方法 讀取指定數(shù)量的數(shù)據(jù)記錄
    skip()方法來跳過指定數(shù)量的數(shù)據(jù)

    db.集合名稱.find().limit(num)
    db.集合名稱.find().skip(num)
    

limit() 方法、Skip() 方法 同時(shí)使用,不分先后順序 表示跳過多少條,返回多少條

  db.stu.find().limit(4).skip(5)
  db.stu.find().skip(5).limit(4)
  • MongoDB sort() 方法
    對(duì)數(shù)據(jù)進(jìn)行排序,sort() 方法可以通過參數(shù)指定排序的字段,并使用 1 和 -1 來指定排序的方式,其中 1 為升序排列,而 -1 是用于降序排列。

    #升序
    db.集合名稱.find().sort({排序字段:1})
    #降序
    db.集合名稱.find().sort({排序字段:-1})
    #根據(jù)多個(gè)字段排序,先字段的先后順序排序
    db.集合名稱.find().sort({age:-1,gender:1})
    

注意: skip(), limilt(), sort()三個(gè)放在一起執(zhí)行的時(shí)候,執(zhí)行的順序是先 sort(), 然后是 skip(),最后是顯示的 limit()。

  • MongoDB distinct() 方法

    db.集合名稱.distinct('去重字段',{條件})
    
  • MongoDB distinct() 方法
    在查詢到的返回結(jié)果中,只選擇必要的字段,而不是選擇一個(gè)文檔的整個(gè)字段,參數(shù)為字段與值,值為1表示顯示,值為0不顯示

    db.集合名稱.find({},{字段名稱:0,...})
    
  • MongoDB count() 方法
    表示返回集合中的文檔數(shù)量,在count()函數(shù)中添加條件:

    db.集合名稱.find({條件}).count()
    
最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,285評(píng)論 2 89
  • 一、MongoDB簡(jiǎn)介 1.概述 ? MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫,由C++語言編寫。旨在為WE...
    鄭元吉閱讀 1,118評(píng)論 0 2
  • 一、MongoDB介紹 1、NoSQL:非關(guān)系型數(shù)據(jù)庫 在php的世界里,常見的非關(guān)系型數(shù)據(jù)庫有memcached...
    寵辱不驚丶?xì)q月靜好閱讀 689評(píng)論 0 3
  • 簡(jiǎn)介 MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的NoSQL數(shù)據(jù)庫 由C++語言編寫,運(yùn)行穩(wěn)定,性能高 旨在為 WE...
    大熊_7d48閱讀 37,866評(píng)論 1 9
  • NoSql數(shù)據(jù)庫優(yōu)缺點(diǎn) 在優(yōu)勢(shì)方面主要體現(xiàn)在下面幾點(diǎn): 簡(jiǎn)單的擴(kuò)展 快速的讀寫 低廉的成本 靈活的數(shù)據(jù)模型 在不足...
    dreamer_lk閱讀 2,873評(píng)論 0 6

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