(一)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連線