MongoDB 是由C++語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統。html
在高負載的狀況下,添加更多的節點,能夠保證服務器性能。linux
MongoDB 旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。web
MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔相似於 JSON 對象。字段值能夠包含其餘文檔,數組及文檔數組。正則表達式
官網:https://www.mongodb.com/download-center#communitysql
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz # 下載 tar -zxvf mongodb-linux-x86_64-3.0.6.tgz # 解壓 mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb # 將解壓包拷貝到指定目錄 export PATH=<mongodb-install-directory>/bin:$PATH #<mongodb-install-directory> 爲Mongo的安裝路徑,如本文的 /usr/local/mongodb mkdir -p /data/db #建立數據庫目錄(啓動指定--dbpath)
suoningdeMacBook-Pro:~ suoning$ cat /usr/local/etc/mongod.conf systemLog: destination: file path: /usr/local/var/log/mongodb/mongo.log logAppend: true storage: dbPath: /usr/local/var/mongodb net: bindIp: 127.0.0.1 port: 11811 suoningdeMacBook-Pro:~ suoning$
$ ./mongod $ ./mongod --dbpath=/data/db --rest # 默認端口爲:27017 # MongoDB 提供了簡單的 HTTP 用戶界面。 若是你想啓用該功能,須要在啓動的時候指定參數 --rest # MongoDB 的 Web 界面訪問端口比服務的端口多1000。若是你的MongoDB運行端口使用默認的27017,你能夠在端口號爲28017訪問web用戶界面,即地址爲:http://localhost:28017
$ sudo mongo $ sudo mongo --port 11811 $ sudo mongo -u root -p pwd 127.0.0.1:11811/test
> > use admin switched to db admin > db admin > db.createUser({user:'suoning',pwd:'123456',roles:[{role:'userAdminAnyDatabase',db:'admin'}]}) Successfully added user: { "user" : "suoning", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } > exit bye
版本區別與更多配置:https://docs.mongodb.com/manual/administration/configuration/mongodb
suoningdeMacBook-Pro:~ suoning$ cat /usr/local/etc/mongod.conf systemLog: destination: file path: /usr/local/var/log/mongodb/mongo.log logAppend: true storage: dbPath: /usr/local/var/mongodb net: bindIp: 127.0.0.1 port: 11811 security: authorization: enabled suoningdeMacBook-Pro:~ suoning$
> > show dbs 2017-04-25T08:41:50.126+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }", "code" : 13, "codeName" : "Unauthorized" } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1 shellHelper.show@src/mongo/shell/utils.js:761:19 shellHelper@src/mongo/shell/utils.js:651:15 @(shellhelp2):1:1 > > use admin switched to db admin > db.auth('suoning','123456') 1 > show dbs admin 0.000GB local 0.000GB >
> use admin switched to db admin > db.auth('suoning','123456') 1 > > use mydb switched to db mydb > db.createUser({user:'nick',pwd:'123456',roles:[{role:'readWrite',db:'mydb'}]}) Successfully added user: { "user" : "nick", "roles" : [ { "role" : "readWrite", "db" : "mydb" } ] } > > db.auth('nick','123456') 1 >
> db.dropUser("nick") true
> use admin switched to db admin > db.auth('suoning','123456') 1 > db.system.users.find() { "_id" : "admin.suoning", "user" : "suoning", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "XXW+MD0TENKSkzk0bM2EGw==", "storedKey" : "iIuv5DpGOksvaFpFOSnAIRSwh+w=", "serverKey" : "ZGA7/Lkjv+RJX3fNANQN9hgBUwY=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] } { "_id" : "mydb.nick", "user" : "nick", "db" : "mydb", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "j71pQs/OR1eRtRa1IT80+w==", "storedKey" : "5hkHmU+FwdENDgGjV0wIbmTAOrQ=", "serverKey" : "Qs+c0gfGNUpwD/ZKgeOackzwNxI=" } }, "roles" : [ { "role" : "readWrite", "db" : "mydb" } ] } >
角色說明: Read:容許用戶讀取指定數據庫 readWrite:容許用戶讀寫指定數據庫 dbAdmin:容許用戶在指定數據庫中執行管理函數,如索引建立、刪除,查看統計或訪問system.profile userAdmin:容許用戶向system.users集合寫入,能夠找指定數據庫裏建立、刪除和管理用戶 clusterAdmin:只在admin數據庫中可用,賦予用戶全部分片和複製集相關函數的管理權限。 readAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀權限 readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的讀寫權限 userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的userAdmin權限 dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶全部數據庫的dbAdmin權限。 root:只在admin數據庫中可用。超級帳號,超級權限
數據類型 | 描述 |
---|---|
String | 字符串。存儲數據經常使用的數據類型。在 MongoDB 中,UTF-8 編碼的字符串纔是合法的。 |
Integer | 整型數值。用於存儲數值。根據你所採用的服務器,可分爲 32 位或 64 位。 |
Boolean | 布爾值。用於存儲布爾值(真/假)。 |
Double | 雙精度浮點值。用於存儲浮點值。 |
Min/Max keys | 將一個值與 BSON(二進制的 JSON)元素的最低值和最高值相對比。 |
Arrays | 用於將數組或列表或多個值存儲爲一個鍵。 |
Timestamp | 時間戳。記錄文檔修改或添加的具體時間。 |
Object | 用於內嵌文檔。 |
Null | 用於建立空值。 |
Symbol | 符號。該數據類型基本上等同於字符串類型,但不一樣的是,它通常用於採用特殊符號類型的語言。 |
Date | 日期時間。用 UNIX 時間格式來存儲當前日期或時間。你能夠指定本身的日期時間:建立 Date 對象,傳入年月日信息。 |
Object ID | 對象 ID。用於建立文檔的 ID。 |
Binary Data | 二進制數據。用於存儲二進制數據。 |
Code | 代碼類型。用於在文檔中存儲 JavaScript 代碼。 |
Regular expression | 正則表達式類型。用於存儲正則表達式。 |
> show dbs admin 0.000GB local 0.000GB > > use mydb switched to db mydb > db mydb > > db.mydb.insert({"name":"Nick","age":18}) WriteResult({ "nInserted" : 1 }) > > show dbs admin 0.000GB local 0.000GB mydb 0.000GB > > show tables; mydb >
> db.dropUser("nick") true > > db.createUser({user:'nick',pwd:'123456',roles:[{role:'dbAdmin',db:'mydb'}]}) Successfully added user: { "user" : "nick", "roles" : [ { "role" : "dbAdmin", "db" : "mydb" } ] } > > db.auth("nick","123456") 1 > > use mydb switched to db mydb > db mydb > > show dbs; admin 0.000GB local 0.000GB mydb 0.000GB > > db.dropDatabase() { "dropped" : "mydb", "ok" : 1 } > > show dbs; admin 0.000GB local 0.000GB >
> db; mydb > show tables; mydb > > db.mydb.drop(); true > show tables; >
使用 insert() 或 save() 方法向集合中插入文檔,語法以下:docker
db.COLLECTION_NAME.insert(document)
建立讀寫用戶:shell
> db.createUser({user:'ning',pwd:'123456',roles:[{role:'readWrite',db:'mydb'}]}) Successfully added user: { "user" : "ning", "roles" : [ { "role" : "readWrite", "db" : "mydb" } ] } > > db.auth('ning','123456') 1 >
插入數據:數據庫
> > db.user.insert({'name':'nick','age':18,'girlfriend':['jenny','coco','julia']}) WriteResult({ "nInserted" : 1 }) > > show tables user >
> > vb = ({'sex':'man'}); { "sex" : "man" } > db.user.insert(vb); WriteResult({ "nInserted" : 1 }) >
插入文檔你也可使用 db.col.save(document) 命令。若是不指定 _id 字段 save() 方法相似於 insert() 方法。若是指定 _id 字段,則會更新該 _id 的數據。express
remove() 方法的基本語法格式以下所示:
db.collection.remove( <query>, <justOne> ) # MongoDB 是 2.6 版本之後的,語法格式以下: db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } ) # 參數說明: query :(可選)刪除的文檔的條件。 justOne : (可選)若是設爲 true 或 1,則只刪除一個文檔。 writeConcern :(可選)拋出異常的級別。
刪除數據:
> db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 18, "girlfriend" : [ "jenny", "coco", "julia" ] } { "_id" : ObjectId("58fef9165b9ea92ab29fbd4c"), "sex" : "man" } > > db.user.remove({'sex':'man'}) WriteResult({ "nRemoved" : 1 }) > > db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 18, "girlfriend" : [ "jenny", "coco", "julia" ] } >
刪除第一條找到的記錄能夠設置 justOne 爲 1:
>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
刪除全部數據:
>db.col.remove({}) >db.col.find() >
# 只更新一條 > db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 21, "girlfriend" : [ "jenny", "coco", "julia" ] } { "_id" : ObjectId("58feffe55b9ea92ab29fbd4d"), "name" : "jenny", "age" : 21 } > > db.user.update({'age':21},{$set:{'age':22}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > > db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 22, "girlfriend" : [ "jenny", "coco", "julia" ] } { "_id" : ObjectId("58feffe55b9ea92ab29fbd4d"), "name" : "jenny", "age" : 21 } > # 更新多條 > db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 21, "girlfriend" : [ "jenny", "coco", "julia" ] } { "_id" : ObjectId("58feffe55b9ea92ab29fbd4d"), "name" : "jenny", "age" : 21 } > > db.user.update({'age':21},{$set:{'age':22}},{multi:true}) WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 }) > > db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 22, "girlfriend" : [ "jenny", "coco", "julia" ] } { "_id" : ObjectId("58feffe55b9ea92ab29fbd4d"), "name" : "jenny", "age" : 22 } >
save() 方法經過傳入的文檔來替換已有文檔。語法格式以下:
db.collection.save( <document>, { writeConcern: <document> } ) 參數說明: document : 文檔數據。 writeConcern :可選,拋出異常的級別。
> db.user.find() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 22, "girlfriend" : [ "jenny", "coco", "julia" ] } > > db.user.save({ "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 18, "girlfriend" : [ "jenny", "julia" ] }) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > > db.user.find().pretty() { "_id" : ObjectId("58fef7d55b9ea92ab29fbd4b"), "name" : "nick", "age" : 18, "girlfriend" : [ "jenny", "julia" ] } >
查詢數據的語法格式以下:
db.mydb.find(query, projection) query :可選,使用查詢操做符指定查詢條件 projection :可選,使用投影操做符指定返回的鍵。查詢時返回文檔中全部鍵值, 只需省略該參數便可(默認省略)。
pretty() 方法以格式化的方式來顯示全部文檔。 >db.mydb.find().pretty()
操做 | 格式 | 範例 | RDBMS中的相似語句 |
---|---|---|---|
等於 | {<key>:<value> } |
db.col.find({"name":"nick"}).pretty() |
where name = 'nick' |
小於 | {<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
小於或等於 | {<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
大於 | {<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
大於或等於 | {<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
不等於 | {<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
獲取"col"集合中 "likes" 大於100,小於 200 的數據,你可使用如下命令:
db.col.find({likes : {$lt :200, $gt : 100}})
and: >db.col.find({key1:value1, key2:value2}).pretty() or: >db.col.find( { $or: [ {key1: value1}, {key2:value2} ] } ).pretty()
Limit、Skip
limit()方法基本語法以下所示:
>db.COLLECTION_NAME.find().limit(NUMBER)
skip() 方法腳本語法格式以下:
使用skip()方法來跳過指定數量的數據,skip方法接受一個數字參數做爲跳過的記錄條數,默認爲0。
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
sort()方法對數據進行排序,sort()方法能夠經過參數指定排序的字段,並使用 1 和 -1 來指定排序的方式,其中 1 爲升序排列,而-1是用於降序排列。
>db.COLLECTION_NAME.find().sort({KEY:1})
獲取 "col" 集合中 title 爲 String 的數據:
db.col.find({"title" : {$type : 2}})
對應匹配類型:
類型 | 數字 | 備註 |
---|---|---|
Double | 1 | |
String | 2 | |
Object | 3 | |
Array | 4 | |
Binary data | 5 | |
Undefined | 6 | 已廢棄。 |
Object id | 7 | |
Boolean | 8 | |
Date | 9 | |
Null | 10 | |
Regular Expression | 11 | |
JavaScript | 13 | |
Symbol | 14 | |
JavaScript (with scope) | 15 | |
32-bit integer | 16 | |
Timestamp | 17 | |
64-bit integer | 18 | |
Min key | 255 | Query with -1. |
Max key | 127 |
使用 ensureIndex() 方法來建立索引,語法以下:
>db.COLLECTION_NAME.ensureIndex({KEY:1}) 語法中 Key 值爲你要建立的索引字段,1爲指定按升序建立索引,若是你想按降序來建立索引指定爲-1便可
複合索引 db.col.ensureIndex({"title":1,"description":-1})
後臺執行 經過在建立索引時加background:true 的選項,讓建立工做在後臺執行 db.values.ensureIndex({open: 1, close: 1}, {background: true})
ensureIndex() 接收可選參數,可選參數列表以下:
Parameter | Type | Description |
---|---|---|
background | Boolean | 建索引過程會阻塞其它數據庫操做,background可指定之後臺方式建立索引,即增長 "background" 可選參數。 "background" 默認值爲false。 |
unique | Boolean | 創建的索引是否惟一。指定爲true建立惟一索引。默認值爲false. |
name | string | 索引的名稱。若是未指定,MongoDB的經過鏈接索引的字段名和排序順序生成一個索引名稱。 |
dropDups | Boolean | 在創建惟一索引時是否刪除重複記錄,指定 true 建立惟一索引。默認值爲 false. |
sparse | Boolean | 對文檔中不存在的字段數據不啓用索引;這個參數須要特別注意,若是設置爲true的話,在索引字段中不會查詢出不包含對應字段的文檔.。默認值爲 false. |
expireAfterSeconds | integer | 指定一個以秒爲單位的數值,完成 TTL設定,設定集合的生存時間。 |
v | index version | 索引的版本號。默認的索引版本取決於mongod建立索引時運行的版本。 |
weights | document | 索引權重值,數值在 1 到 99,999 之間,表示該索引相對於其餘索引字段的得分權重。 |
default_language | string | 對於文本索引,該參數決定了停用詞及詞幹和詞器的規則的列表。 默認爲英語 |
language_override | string | 對於文本索引,該參數指定了包含在文檔中的字段名,語言覆蓋默認的language,默認值爲 language. |
索引不能被如下的查詢使用:
聚合(aggregate)主要用於處理數據(諸如統計平均值,求和等),並返回計算後的數據結果。
聚合的方法使用aggregate()方法,基本語法格式以下所示:
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}]) 以上實例相似sql語句: select by_user, count(*) from mycol group by by_user 咱們經過字段by_user字段對數據進行分組,並計算by_user字段相同值的總和。
表達式 | 描述 | 實例 |
---|---|---|
$sum | 計算總和。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}]) |
$avg | 計算平均值 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}]) |
$min | 獲取集合中全部文檔對應值得最小值。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}]) |
$max | 獲取集合中全部文檔對應值得最大值。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}]) |
$push | 在結果文檔中插入值到一個數組中。 | db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}]) |
$addToSet | 在結果文檔中插入值到一個數組中,但不建立副本。 | db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}]) |
$first | 根據資源文檔的排序獲取第一個文檔數據。 | db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}]) |
$last | 根據資源文檔的排序獲取最後一個文檔數據 | db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}]) |
MongoDB的聚合管道將MongoDB文檔在一個管道處理完畢後將結果傳遞給下一個管道處理。管道操做是能夠重複的。
表達式:處理輸入文檔並輸出。表達式是無狀態的,只能用於計算當前聚合管道的文檔,不能處理其它的文檔。
一、$project實例
db.article.aggregate( { $project : { title : 1 , author : 1 , }} ); 這樣的話結果中就只還有_id,tilte和author三個字段了,默認狀況下_id字段是被包含的,若是要想不包含_id話能夠這樣: db.article.aggregate( { $project : { _id : 0 , title : 1 , author : 1 }});
2.$match實例
db.articles.aggregate( [ { $match : { score : { $gt : 70, $lte : 90 } } }, { $group: { _id: null, count: { $sum: 1 } } } ] ); $match用於獲取分數大於70小於或等於90記錄,而後將符合條件的記錄送到下一階段$group管道操做符進行處理。
3.$skip實例
db.article.aggregate( { $skip : 5 }); 通過$skip管道操做符處理後,前五個文檔被"過濾"掉。
mongo執行計劃分析,詳細點此處。
> db.user.find({"name":"nick"}).explain(); > db.user.find({"name":"nick"}).explain(true);
關鍵參數詳細:
executionStats.executionSuccess
是否執行成功
executionStats.nReturned
查詢的返回條數
executionStats.executionTimeMillis
總體執行時間
executionStats.totalKeysExamined
索引掃描次數
executionStats.totalDocsExamined
document掃描次數
使用 hint 來強制 MongoDB 使用一個指定的索引。
這種方法某些情形下會提高性能。 一個有索引的 collection 而且執行一個多字段的查詢(一些字段已經索引了)。
以下查詢指定了使用 naem 和 age 索引字段來查詢: > db.user.find({"name":"nick","age":18}).hint({"name":1,"age":1});
http://www.cnblogs.com/suoning/p/6759367.html
MongoDB 提供了可用於 32 位和 64 位系統的預編譯二進制包,你能夠從MongoDB官網下載安裝,MongoDB 預編譯二進制包下載地址:https://www.mongodb.com/download-center#community
注意:在 MongoDB 2.2 版本後已經再也不支持 Windows XP 系統。最新版本也已經沒有了 32 位系統的安裝文件。
根據你的系統下載 32 位或 64 位的 .msi 文件,下載後雙擊該文件,按操做提示安裝便可。
安裝過程當中,你能夠經過點擊 "Custom(自定義)" 按鈕來設置你的安裝目錄。
建立數據目錄
MongoDB將數據目錄存儲在 db 目錄下。可是這個數據目錄不會主動建立,咱們在安裝完成後須要建立它。請注意,數據目錄應該放在根目錄下((如: C:\ 或者 D:\ 等 )。
在本教程中,咱們已經在 C 盤安裝了 mongodb,如今讓咱們建立一個 data 的目錄而後在 data 目錄裏建立 db 目錄。
c:\>cd c:\ c:\>mkdir data c:\>cd data c:\data>mkdir db c:\data>cd db c:\data\db>
你也能夠經過 window 的資源管理器中建立這些目錄,而不必定經過命令行。
爲了從命令提示符下運行 MongoDB 服務器,你必須從 MongoDB 目錄的 bin 目錄中執行 mongod.exe 文件。
C:\mongodb\bin\mongod --dbpath c:\data\db
若是執行成功,會輸出以下信息:
2015-09-25T15:54:09.212+0800 I CONTROL Hotfix KB2731284 or later update is not installed, will zero-out data files 2015-09-25T15:54:09.229+0800 I JOURNAL [initandlisten] journal dir=c:\data\db\j ournal 2015-09-25T15:54:09.237+0800 I JOURNAL [initandlisten] recover : no journal fil es present, no recovery needed 2015-09-25T15:54:09.290+0800 I JOURNAL [durability] Durability thread started 2015-09-25T15:54:09.294+0800 I CONTROL [initandlisten] MongoDB starting : pid=2 488 port=27017 dbpath=c:\data\db 64-bit host=WIN-1VONBJOCE88 2015-09-25T15:54:09.296+0800 I CONTROL [initandlisten] targetMinOS: Windows 7/W indows Server 2008 R2 2015-09-25T15:54:09.298+0800 I CONTROL [initandlisten] db version v3.0.6 ……
咱們能夠在命令窗口中運行 mongo.exe 命令便可鏈接上 MongoDB,執行以下命令:
C:\mongodb\bin\mongo.exe
管理員模式打開命令行窗口
建立目錄,執行下面的語句來建立數據庫和日誌文件的目錄
mkdir c:\data\db mkdir c:\data\log
建立配置文件
建立一個配置文件。該文件必須設置 systemLog.path 參數,包括一些附加的配置選項更好。
例如,建立一個配置文件位於 C:\mongodb\mongod.cfg,其中指定 systemLog.path 和 storage.dbPath。具體配置內容以下:
systemLog: destination: file path: c:\data\log\mongod.log storage: dbPath: c:\data\db
經過執行mongod.exe,使用--install選項來安裝服務,使用--config選項來指定以前建立的配置文件。
"C:\mongodb\bin\mongod.exe" --config "C:\mongodb\mongod.cfg" --install
要使用備用 dbpath,能夠在配置文件(例如:C:\mongodb\mongod.cfg)或命令行中經過 --dbpath 選項指定。
若是須要,您能夠安裝 mongod.exe 或 mongos.exe 的多個實例的服務。只須要經過使用 --serviceName 和 --serviceDisplayName 指定不一樣的實例名。只有當存在足夠的系統資源和系統的設計須要這麼作。
啓動MongoDB服務
net start MongoDB
關閉MongoDB服務
net stop MongoDB
移除MongoDB服務
"C:\mongodb\bin\mongod.exe" --remove
命令行下運行 MongoDB 服務器 和 配置 MongoDB 服務 任選一個方式啓動就能夠。
任選一個操做就好
若是你須要進入MongoDB後臺管理,你須要先打開mongodb裝目錄的下的bin目錄,而後執行mongo.exe文件,MongoDB Shell是MongoDB自帶的交互式Javascript shell,用來對MongoDB進行操做和管理的交互式環境。
當你進入mongoDB後臺後,它默認會連接到 test 文檔(數據庫):
C:\Users\user>mongo MongoDB shell version v3.4.10 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.10 Server has startup warnings: 2017-12-13T15:38:58.898+0800 I CONTROL [initandlisten] 2017-12-13T15:38:58.898+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2017-12-13T15:38:58.898+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2017-12-13T15:38:58.898+0800 I CONTROL [initandlisten] >
因爲它是一個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 字段中。
http://www.runoob.com/mongodb/mongodb-window-install.html
基於docker的mongo
在 docker 上運行 MongoDB
首先,獲取 MongoDB 的鏡像:
$ docker pull mongo
而後啓動 MongoDB 容器
$ docker run -d --name any-mongo -p 27017:27017 mongo
Idea中使用Mongo plugin: