1. 程式人生 > 其它 >(一)Mongodb的下載與安裝

(一)Mongodb的下載與安裝

一、MongoDB的下載:

MongoDB的官網是:http://www.mongodb.org/

MongoDB 預編譯二進位制包下載地址:https://www.mongodb.com/download-center/community

可以在官網下載,但是我試了一下特別麻煩,所有找了一個簡單的方法,可以在這個地址直接下載zip,http://dl.mongodb.org/dl/win32/x86_64

4以上的版本有公鑰金鑰的問題,所以下載4以下的版本

二、MongoDB的安裝

Windows系統 目前選擇win32/mongodb-win32-x86_64-2008plus-ssl-v3.6-latest-signed.msi

下載 .msi 檔案,下載後雙擊該檔案,按操作提示安裝即可。

安裝過程中,你可以通過點選 "Custom(自定義)" 按鈕來設定你的安裝目錄。

下一步安裝"install mongoDB compass"不勾選(當然你也可以選擇安裝它,可能需要更久的安裝時間),MongoDB Compass 是一個圖形介面管理工具,我們可以在後面自己到官網下載安裝,下載地址:https://www.mongodb.com/download-center/compass

建立資料目錄

MongoDB 將資料目錄儲存在 db 目錄下。但是這個資料目錄不會主動建立,我們在安裝完成後需要建立它。

可以用命令列建立如下

cd D:\Sql\MongoDB\Server\3.6
md "\data\db"

也可以直接在資源管理器windows下直接建立資料夾

在D:\Sql\MongoDB\Server\3.6下,然後分別建立db,log兩個資料夾,至此mongodb下有以下資料夾,

D:\Sql\MongoDB\Server\3.6\bin 
D:\Sql\MongoDB\Server\3.6\data\db 
D:\Sql\MongoDB\Server\3.6\data\log

三、命令列下執行 MongoDB 伺服器(啟動方式1)

為了從命令提示符下執行 MongoDB 伺服器,你必須從 MongoDB 目錄的 bin 目錄中執行

【問題】

mongod : 無法將“mongod”項識別為 cmdlet、函式、指令碼檔案或可執行程式的名稱。

【解決】

【必須管理員的模式】開啟CMD

PS D:\Sql\MongoDB\Server\3.6\bin> mongod --dbpath D:\Sql\MongoDB\Server\3.6\data\db 

表示在27017埠啟動成功,瀏覽器開啟http://localhost:27017/顯示如下

注意:

mongod --dbpath 命令是建立資料庫檔案的存放位置,啟動mongodb服務時需要先確定資料庫檔案存放的位置,否則系統不會自動建立,啟動會不成功。

mongod--logpath 表示日誌檔案存放的路徑 --logappend 表示以追加的方式寫日誌檔案

在 " bin/mongod.cfg " 檔案中也會有dbPath 和 logPath的配置

另外:

在 bin目錄下的 mongod.exe檔案,雙擊會閃出,就是因為沒有執行上面的mongod --dbpath 命令

在 bin目錄下的 mongo.exe檔案,雙擊來開啟 MongoDB 客戶端,進行資料庫操作

四、本地客戶端連線剛剛搭建的MongoDB伺服器

mongo 命令 是連線資料庫服務,即連線伺服器,可以通過埠進行訪問(27017)

我們可以在命令視窗中執行 mongo.exe 命令即可連線上 MongoDB

【問題】

Error: couldn't connect to server 127.0.0.1

【解決】

連線MongoDB之前一定要先執行第三步 命令列執行【MongoDB伺服器先啟動】,本地才能連線到伺服器

建立配置檔案

建立一個配置檔案。該檔案必須設定 systemLog.path 引數,包括一些附加的配置選項更好。

例如,建立一個配置檔案位於

D:\Sql\MongoDB\Server\3.6\mongod.cfg

其中指定 systemLog.path 和 storage.dbPath。具體配置內容如下:

systemLog:
    destination: file
    path: D:\Sql\MongoDB\Server\3.6\data\log\mongod.log
storage:
    dbPath: D:\Sql\MongoDB\Server\3.6\data\db

五、安裝 MongoDB服務並啟動(啟動方式2)

通過執行mongod.exe,使用--install選項來安裝服務,使用--config選項來指定之前建立的配置檔案。

D:\Sql\MongoDB\Server\3.6\bin\mongod.exe --config "D:\Sql\MongoDB\Server\3.6\mongod.cfg" --install

要使用備用 dbpath,可以在配置檔案(例如:D:\Sql\MongoDB\Server\3.6\mongod.cfg)或命令列中通過 --dbpath 選項指定。

如果需要,您可以安裝 mongod.exe mongos.exe 的多個例項的服務。只需要通過使用 --serviceName 和 --serviceDisplayName 指定不同的例項名。只有當存在足夠的系統資源和系統的設計需要這麼做。

mongod --dbpath=安裝路徑\data\db  --logpath=安裝路徑\data\log\mongodb.log --install --serviceName "MongoDB"

【問題】

net start MongoDB
MongoDB 服務正在啟動 .
MongoDB 服務無法啟動。

發生服務特定錯誤: 100.

【原因1】因為前面的mongod已經啟動

【解決1】關掉mongod程序

【原因2】沒有正常關閉mongod服務,導致mongod被鎖

【解決2】進入db資料夾,刪除mongod.lock和storage.bson檔案,然後重新啟動服務即可,

【結果】

啟動MongoDB服務

net start MongoDB

關閉MongoDB服務

net stop MongoDB

移除 MongoDB 服務

D:\Sql\MongoDB\Server\3.6\bin\mongod.exe --remove

命令列下執行 MongoDB 伺服器配置 MongoDB 服務任選一個方式啟動就可以。

任選一個操作就好


六、MongoDB 後臺管理 Shell

如果你需要進入MongoDB後臺管理,你需要先開啟mongodb裝目錄的下的bin目錄,然後執行mongo.exe檔案,MongoDB Shell是MongoDB自帶的互動式Javascript shell,用來對MongoDB進行操作和管理的互動式環境。

當你進入mongoDB後臺後,它預設會連結到 test 文件(資料庫):

D:\Sql\MongoDB\Server\3.6\bin>mongo
MongoDB shell version v3.6.23-8-gc2609ed3ed
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("7c838f33-6a05-4894-827d-76713c404e4e") }
MongoDB server version: 3.6.23-8-gc2609ed3ed

由於它是一個JavaScript shell,您可以執行一些簡單的算術運算:

> 2 + 2
4
>

db命令用於檢視當前操作的文件(資料庫):

> db
test
>

插入一些簡單的記錄並查詢它:

> db.runoob.insert({x:10})
WriteResult({ "nInserted" : 1 })
> db.runoob.find()
{ "_id" : ObjectId("5604ff74a274a611b0c990aa"), "x" : 10 }
>

第一個命令將數字 10 插入到 runoob 集合的 x 欄位中。

七、操作資料庫

到這一步資料庫已經成功跑起來了,接下來就是操作一些命令向資料庫裡面插入資料等並且可以看到自己對資料庫的一系列操作的結果了

db.stats()命令將顯示資料庫名稱,資料庫中的集合和文件數量

> db.stats()
{
        "db" : "test",
        "collections" : 1,
        "views" : 0,
        "objects" : 1,
        "avgObjSize" : 33,
        "dataSize" : 33,
        "storageSize" : 16384,
        "numExtents" : 0,
        "indexes" : 1,
        "indexSize" : 16384,
        "fsUsedSize" : 15998328832,
        "fsTotalSize" : 43689963520,
        "ok" : 1
}

db.help()將列出一個命令列表

> db.help()
DB methods:
        db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [just calls db.runCommand(...)]
        db.aggregate([pipeline], {options}) - performs a collectionless aggregation on this database; returns a cursor
        db.auth(username, password)
        db.cloneDatabase(fromhost) - deprecated
        db.commandHelp(name) returns the help for the command
        db.copyDatabase(fromdb, todb, fromhost) - deprecated
        db.createCollection(name, {size: ..., capped: ..., max: ...})
        db.createView(name, viewOn, [{$operator: {...}}, ...], {viewOptions})
        db.createUser(userDocument)
        db.currentOp() displays currently executing operations in the db
        db.dropDatabase()
        db.eval() - deprecated
        db.fsyncLock() flush data to disk and lock server for backups
        db.fsyncUnlock() unlocks server following a db.fsyncLock()
        db.getCollection(cname) same as db['cname'] or db.cname
        db.getCollectionInfos([filter]) - returns a list that contains the names and options of the db's collections
        db.getCollectionNames()
        db.getLastError() - just returns the err msg string
        db.getLastErrorObj() - return full status object
        db.getLogComponents()
        db.getMongo() get the server connection object
        db.getMongo().setSlaveOk() allow queries on a replication slave server
        db.getName()
        db.getPrevError()
        db.getProfilingLevel() - deprecated
        db.getProfilingStatus() - returns if profiling is on and slow threshold
        db.getReplicationInfo()
        db.getSiblingDB(name) get the db at the same server as this one
        db.getWriteConcern() - returns the write concern used for any operations on this db, inherited from server object if set
        db.hostInfo() get details about the server's host
        db.isMaster() check replica primary status
        db.killOp(opid) kills the current operation in the db
        db.listCommands() lists all the db commands
        db.loadServerScripts() loads all the scripts in db.system.js
        db.logout()
        db.printCollectionStats()
        db.printReplicationInfo()
        db.printShardingStatus()
        db.printSlaveReplicationInfo()
        db.dropUser(username)
        db.repairDatabase()
        db.resetError()
        db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into {cmdObj: 1}
        db.serverStatus()
        db.setLogLevel(level,<component>)
        db.setProfilingLevel(level,slowms) 0=off 1=slow 2=all
        db.setWriteConcern(<write concern doc>) - sets the write concern for writes to the db
        db.unsetWriteConcern(<write concern doc>) - unsets the write concern for writes to the db
        db.setVerboseShell(flag) display extra information in shell output
        db.shutdownServer()
        db.stats()
        db.version() current version of the server
>

八、mongod和mogo的區別

1. 注意 mongod 和 mongo 的區別

  前者是啟用MongoDB程序(服務端),後者是對MongoDB進行連線操作(客戶端)

  2. 執行 mongod 需要 配置路徑 進行啟用,單純的雙擊 mongod.exe檔案會閃出,正確的是執行mongod --dbpath 命令

  3. 在執行mongod命令啟用MongoDB程序(伺服器)的基礎上,再使用mongo 對其進行連線操作,

九、幾個概念

來源MongoDB面試題問題以及參考答案

8.什麼是”mongod“
  mongod是處理MongoDB系統的主要程序。它處理資料請求,管理資料儲存,和執行後臺管理操作。當我們執行mongod命令意味著正在啟動MongoDB程序,並且在後臺執行。

9."mongod"引數有什麼
  傳遞資料庫儲存路徑,預設是"/data/db"
  埠號 預設是 "27017"
10.什麼是"mongo"
  它是一個命令列工具用於連線一個特定的mongod例項。當我們沒有帶引數執行mongo命令它將使用預設的埠號和localhost連線

宣告 歡迎轉載,但請保留文章原始出處:) 部落格園:https://www.cnblogs.com/chenxiaomeng/ 如出現轉載未宣告 將追究法律責任~謝謝合作