MongoDBMongoDB入門


備註

  • 移動應用進入市場後,全球數據開始大幅增長。傳統的關係數據庫 - SQL幾乎無法處理大量數據。引入NoSQL數據庫來處理那些數據,其中更多的靈活性來自每個數據的可變列數。
  • MongoDB是領先的NoSQL數據庫之一。每個集合都包含許多JSON文檔。可以在JSON文檔中表達的任何數據模型都可以輕鬆存儲在MongoDB中。
  • MongoDB是一個服務器客戶端數據庫。服務器通常使用二進製文件mongod運行,客戶端使用mongo運行。
  • 出於各種哲學和實用的原因 ,在v.3.2之前的MongoDB中沒有連接操作。但是Mongo shell支持javascript,所以如果$ lookup不可用,可以在插入之前在javascript中模擬文檔的連接操作。
  • 要在生產環境中運行實例,強烈建議您遵循操作清單

版本

發布日期
3.4 2016年11月29日
3.2 2015年12月8日
3.0 2015年3月3日
2.6 2014年4月8日
2.4 2013年3月19日
2.2 2012-08-29
2.0 2011-09-12
1.8 2011-03-16
1.6 2010-08-31
1.4 2010-03-25
1.2 2009-12-10

mongo shell上的基本命令

顯示所有可用數據庫:

show dbs;
 

選擇要訪問的特定數據庫,例如mydb 。如果mydb 尚不存在,這將創建mydb

use mydb;
 

顯示數據庫中的所有集合(請務必先選擇一個,見上文):

show collections; 
 

顯示可以與數據庫一起使用的所有函數:

db.mydb.help();
 

要檢查當前選定的數據庫,請使用命令db

> db
mydb
 

db.dropDatabase() 命令用於刪除現有數據庫。

db.dropDatabase()
 

補充條款

SQL術語 MongoDB條款
數據庫數據庫
採集
實體/行文獻
鍵/字段
表加入 嵌入式文件
首要的關鍵 主鍵 (mongodb本身提供的默認鍵_id

在MongoDB中執行JavaScript文件

./mongo localhost:27017/mydb myjsfile.js
 

說明:此操作在mongo shell中執行myjsfile.js 腳本,該shell連接到可通過端口27017 上的localhost 接口訪問的mongod 實例上的mydb 數據庫。 localhost:27017 不是必需的,因為這是mongodb 使用的默認端口。

此外,您可以從mongo 控制台中運行.js 文件。

>load("myjsfile.js")
 

你好,世界

安裝過程之後,應在mongo shell(客戶端終端)中輸入以下行。

> db.world.insert({ "speech" : "Hello World!" });
> cur = db.world.find();x=cur.next();print(x["speech"]);
 

你好,世界!

說明:

  • 在第一行中,我們在默認數據庫test 和名為world 的集合中插入了一個{ key : value } 配對文檔。
  • 在第二行中,我們檢索剛剛插入的數據。檢索到的數據保存在名為cur 的javascript變量中。然後通過next() 函數,我們檢索了第一個也是唯一的文檔,並將其保存在另一個名為x js變量中。然後打印提供密鑰的文檔的值。

安裝

要安裝MongoDB,請按照以下步驟操作:

  • 對於Mac OS:

    • Mac OS有兩個選項:手動安裝或自製程序
    • 使用自製軟件安裝:
      • 在終端中鍵入以下命令:
        $ brew install mongodb
         
    • 手動安裝:
      • 此處下載最新版本。確保下載相應的文件,特別檢查您的操作系統類型是32位還是64位。下載的文件格式為tgz

      • 轉到下載此文件的目錄。然後鍵入以下命令:

        $ tar xvf mongodb-osx-xyz.tgz
         

        而不是xyz ,會有一些版本和系統類型信息。提取的文件夾與tgz 文件的名稱相同。在文件夾中,它們將是一個名為bin 的子文件夾,它將包含幾個二進製文件以及mongodmongo

      • 默認情況下,服務器將數據保存在文件夾/data/db 。因此,我們必須創建該目錄,然後運行具有以下命令的服務器:

        $ sudo bash
        # mkdir -p /data/db
        # chmod 777 /data
        # chmod 777 /data/db
        # exit
         
      • 要啟動服務器,應從當前位置給出以下命令:

        $ ./mongod
         

        默認情況下,它將在端口27017上啟動服務器。

      • 要啟動客戶端,應打開一個具有與以前相同目錄的新終端。然後,以下命令將啟動客戶端並連接到服務器。

        $ ./mongo
         

        默認情況下,它連接到test 數據庫。如果您看到connecting to: test 的行connecting to: test 。然後您已成功安裝MongoDB。恭喜!現在,您可以測試Hello World更加自信。

  • 對於Windows:

    • 此處下載最新版本。確保下載相應的文件,特別檢查您的操作系統類型是32位還是64位。

    • 下載的二進製文件具有擴展名exe 。運行。它將提示安裝嚮導。

    • 單擊下一步

    • 接受許可協議,然後單擊“ 下一步”

    • 選擇完整安裝。

    • 單擊“ 安裝” 。它可能會提示一​​個窗口詢問管理員的權限。單擊

    • 安裝完成後單擊Finish

    • 現在,mongodb安裝在路徑C:/Program Files/MongoDB/Server/3.2/bin 。而不是版本3.2,可能會有一些其他版本的案例。路徑名稱將相應更改。

    • bin 目錄包含幾個二進製文件以及mongodmongo 。要從其他文件夾運行它,您可以在系統路徑中添加路徑。去做吧:

      • 右鍵單擊我的電腦,然後選擇屬性
      • 單擊左窗格中的“ 高級系統設置 ”。
      • 單擊“ 高級”選項卡下的“ 環境變量... ”。
      • System variables部分中選擇Path ,然後單擊Edit ...。
      • 在Windows 10之前,添加一個分號並粘貼上面給出的路徑。在Windows 10中,有一個用於添加新路徑的“ 新建”按鈕。
      • 單擊“ 確定”以保存更改。
    • 現在,創建一個名為data 的文件夾,其中包含要在其中運行服務器的名為db 的子文件夾。

    • 從他們的啟動命令提示符。更改cmd中的路徑或單擊此處打開命令窗口 ,在按住Shift和Ctrl鍵同時右鍵單擊文件夾GUI的空白區域後可以看到該窗口

    • 編寫命令以啟動服務器:

      > mongod
       

      默認情況下,它將在端口27017上啟動服務器。

    • 打開另一個命令提示符並鍵入以下內容以啟動客戶端:

      > mongo
       
    • 默認情況下,它連接到test 數據庫。如果您看到connecting to: test 的行connecting to: test 。然後您已成功安裝MongoDB。恭喜!現在,您可以測試Hello World更加自信。

  • 對於Linux:除了一些等效命令外,幾乎與Mac OS相同。

    • 對於基於Debian的發行版(使用apt-get ):
      • 導入MongoDB存儲庫密鑰。

        $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
        gpg: Total number processed: 1\
        gpg:               imported: 1  (RSA: 1)
         
      • 將存儲庫添加到Ubuntu 16.04上的軟件包列表中。

        $ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
         
      • Ubuntu 14.04上

        $ echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
         
      • 更新包列表。

        $ sudo apt-get update
         
      • 安裝MongoDB。

        $ sudo apt-get install mongodb-org
         
    • 對於基於Red Hat的發行版(使用yum ):
      • 使用您喜歡的文本編輯器。

        $ vi /etc/yum.repos.d/mongodb-org-3.4.repo

      • 粘貼以下文字。

        [mongodb-org-3.4]
        name=MongoDB Repository
        baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
        gpgcheck=1
        enabled=1
        gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
         
      • 更新包列表。

        $ sudo yum update
         
      • 安裝MongoDB

        $ sudo yum install mongodb-org
         

使得find的輸出在shell中可讀

我們在收集測試中添加了三條記錄:

> db.test.insert({"key":"value1","key2":"Val2","key3":"val3"})
WriteResult({ "nInserted" : 1 })
> db.test.insert({"key":"value2","key2":"Val21","key3":"val31"})
WriteResult({ "nInserted" : 1 })
> db.test.insert({"key":"value3","key2":"Val22","key3":"val33"})
WriteResult({ "nInserted" : 1 })
 

如果我們通過find看到它們,它們看起來會非常難看。

> db.test.find()
{ "_id" : ObjectId("5790c5cecae25b3d38c3c7ae"), "key" : "value1", "key2" : "Val2
", "key3" : "val3" }
{ "_id" : ObjectId("5790c5d9cae25b3d38c3c7af"), "key" : "value2", "key2" : "Val2
1", "key3" : "val31" }
{ "_id" : ObjectId("5790c5e9cae25b3d38c3c7b0"), "key" : "value3", "key2" : "Val2
2", "key3" : "val33" }
 

要解決此問題並使其可讀,請使用pretty ()函數。

> db.test.find().pretty()
{
        "_id" : ObjectId("5790c5cecae25b3d38c3c7ae"),
        "key" : "value1",
        "key2" : "Val2",
        "key3" : "val3"
}
{
        "_id" : ObjectId("5790c5d9cae25b3d38c3c7af"),
        "key" : "value2",
        "key2" : "Val21",
        "key3" : "val31"
}
{
        "_id" : ObjectId("5790c5e9cae25b3d38c3c7b0"),
        "key" : "value3",
        "key2" : "Val22",
        "key3" : "val33"
}
>