一、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連接