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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM