1. 程式人生 > >MongoDB 安裝配置

MongoDB 安裝配置

MongoDB 是一個高效能,開源,無模式的文件型資料庫,採用C++開發,是當前NoSQL資料庫中比較熱門的一種,在許多場景下可用於替代傳統的關係型資料庫或鍵/值儲存方式

MongoDB使用BSON作為資料儲存和傳輸的格式,BSON是一種類似JSON的二進位制序列化文件,支援巢狀物件和陣列。MongoDB很像MySQL,document對應MySQL的row,collection對應MySQL的table

MongoDB服務端可執行在Linux、Windows或OS X平臺,支援32位和64位應用,預設埠為27017。推薦執行在64位平臺,因為MongoDB在32位模式執行時支援的最大檔案尺寸為2GB


1,特點和功能

1) 特點

  • 高效能、易部署、易使用,儲存資料非常方便。
  • 面向集合儲存,易儲存物件型別的資料,模式自由。
  • 支援動態查詢,支援完全索引,包含內部物件。
  • 支援複製和故障恢復。
  • 使用高效的二進位制資料儲存,包括大型物件(如視訊等)。
  • 自動處理碎片,以支援雲端計算層次的擴充套件性
  • 支援Python,PHP,Ruby,Java,C,C#,Javascript,Perl及C++語言的驅動程式,社群中也提供了對Erlang及.NET等平臺的驅動程式。
  • 檔案儲存格式為BSON(一種JSON的擴充套件),可通過網路訪問。

2) 功能

  • 面向集合的儲存:適合儲存物件及JSON形式的資料。
  • 動態查詢:Mongo支援豐富的查詢表示式。查詢指令使用JSON形式的標記,可輕易查詢文件中內嵌的物件及陣列。
  • 完整的索引支援:包括文件內嵌物件及陣列。Mongo的查詢優化器會分析查詢表示式,並生成一個高效的查詢計劃。
  • 查詢監視:Mongo包含一個監視工具用於分析資料庫操作的效能。
  • 複製及自動故障轉移:Mongo資料庫支援伺服器之間的資料複製,支援主-從模式及伺服器之間的相互複製。複製的主要目標是提供冗餘及自動故障轉移。
  • 高效的傳統儲存方式:支援二進位制資料及大型物件(如照片或圖片)
  • 自動分片以支援雲級別的伸縮性:自動分片功能支援水平的資料庫叢集,可動態新增額外的機器。

2,  適用場合

  1. 網站資料:Mongo非常適合實時的插入,更新與查詢,並具備網站實時資料儲存所需的複製及高度伸縮性。
  2. 快取:由於效能很高,Mongo也適合作為資訊基礎設施的快取層。在系統重啟之後,由Mongo搭建的持久化快取層可以避免下層的資料來源 過載。
  3. 大尺寸,低價值的資料:使用傳統的關係型資料庫儲存一些資料時可能會比較昂貴,在此之前,很多時候程式設計師往往會選擇傳統的檔案進行儲存。
  4. 高伸縮性的場景:Mongo非常適合由數十或數百臺伺服器組成的資料庫。Mongo的路線圖中已經包含對MapReduce引擎的內建支援。
  5. 用於物件及JSON資料的儲存:Mongo的BSON資料格式非常適合文件化格式的儲存及查詢。

3, 下載安裝

mongoDB 安裝:

tar zxvf mongodb-linux-x86_64-2.2.3.tgz

cd mongodb-linux-x86_64-2.2.3

sudo mkdir /opt/mongodb-2.2.3

sudo ./bin/mongod --dbpath=/opt/mongodb-2.2.3/

CentOS 安裝 MongoDB:


上圖,提示埠號加上1000,然後通過HTTP訪問,於是在瀏覽器位址列輸入:http://localhost:28017,訪問介面如下:


4, 啟動關閉

1) 預設啟動

sudo ./bin/mongod    (預設儲存檔案目錄為/data/db/, 沒有則新建 sudo mkdir -p /data/db/, 預設埠為27017)

2)指定目錄啟動

sudo ./bin/mongod --dbpath=/opt/mongodb-2.2.3/       (儲存檔案目錄為/opt/mongodb-2.2.3/ , 沒有則新建)

3) 指定埠啟動

sudo ./bin/mongod --dbpath=/opt/mongodb-2.2.3/ -p 27000        (埠修改為指定27000),啟動輸出如下:

MongoDB starting : pid=4222 port=27000 dbpath=/opt/mongodb-2.2.3/ 32-bit host=ubuntu

mongodb.conf配置檔案啟動:

[email protected]:~$ cat /opt/mongodb/mongodb.conf    
port=27017
dbpath=/opt/mongodb/data/
logpath=/opt/mongodb/log/mongodb.log
logappend=true
fork=true

啟動命令:

/opt/mongodb/bin/mongod -f /opt/mongodb/mongodb.conf &

4) 後臺啟動命令

sudo ./bin/mongod -shardsvr -replSet shard1 -port=27017 -dbpath=/opt/mongodb-2.2.3/ -logpath=/opt/mongodb-2.2.3/log -logappend -rest -fork

5) 後臺關閉命令

$ .bin/mongod                       // 登入客戶端> use admin                          // 切換到管理員> db.shutdownServer()         // 關閉mongodb

或者

> db.adminCommand({shutdown : 1, force : true})
> //or
> db.shutdownServer({force : true})

> db.adminCommand(shutdown : 1, force : true, timeoutsec : 5)      
 // 超時關閉
> //or
> db.shutdownServer({force : true, timeoutsec : 5})

6) 客戶端啟動

預設啟動: ./bin/mongo

指定埠啟動: ./bin/mongo --port 27000

7) 備份與恢復

$ sudo ./bin/mongodump -d foo -o /opt/mongodb-2.2.3/bk/                  // 備份到bk目錄
connected to: 127.0.0.1
Tue Feb  5 20:58:13 DATABASE: foo	 to 	/opt/mongodb-2.2.3/bk/foo
Tue Feb  5 20:58:13 	foo.foo_test to /opt/mongodb-2.2.3/bk/foo/foo_test.bson
Tue Feb  5 20:58:13 		 1 objects
Tue Feb  5 20:58:13 	Metadata for foo.foo_test to /opt/mongodb-2.2.3/bk/foo/foo_test.metadata.json
$ ./bin/mongorestore -d foo -c foo_test /opt/mongodb-2.2.3/bk/foo/foo_test.bson          // 恢復foo_test集合
connected to: 127.0.0.1
Tue Feb  5 20:58:20 /opt/mongodb-2.2.3/bk/foo/foo_test.bson
Tue Feb  5 20:58:20 	going into namespace [foo.foo_test]
Tue Feb  5 20:58:20 warning: Restoring to foo.foo_test without dropping. Restored data will be inserted without raising errors; check your server log
Tue Feb  5 20:58:20 WARNING: collection foo.foo_test exists with different options than are in the metadata.json file and not using --drop. Options in the metadata file will be ignored.
1 objects found
Tue Feb  5 20:58:20 	Creating index: { key: { _id: 1 }, ns: "foo.foo_test", name: "_id_" }

5, 命令示例

1) 啟動服務端

sudo ./bin/mongod --dbpath=/opt/mongodb-2.2.3/

2) 啟動客戶端

./bin/mongo

3) 客戶端簡單命令

幫助: help

顯示資料庫: show dbs;

選擇資料庫: use test;

插入資料: db.foo.save({homer:2}); 

查詢: db.foo.find();

結果: { "_id" : ObjectId("511078ad857b699e9eaaf516"), "homer" : 2 }

更新: db.foo.update({"homer":2},{"homer":3});         // ( {}, {} ) 第一個{}是查詢條件,第二個{}是重新賦值

結果: { "_id" : ObjectId("511078ad857b699e9eaaf516"), "homer" : 3 }

刪除: db.foo.remove({"homer":3});

複合插入:

> t={"homer":2, "name" : {"name1" : "yang", "name2" : "gang"} }
{ "homer" : 2, "name" : { "name1" : "yang", "name2" : "gang" } }
> db.foo.insert(t);
> db.foo.find();
{ "_id" : ObjectId("5110d3e0af69ad089b234001"), "homer" : 2, "name" : { "name1" : "yang", "name2" : "gang" } }

複合查詢:

> db.foo.find();              // 先檢視集合中所有記錄
{ "_id" : ObjectId("5110ca1aaf69ad089b233fff"), "homer" : 222 }
{ "_id" : ObjectId("5110caffaf69ad089b234000"), "homer" : 222 }
{ "_id" : ObjectId("5110d3e0af69ad089b234001"), "homer" : 2, "name" : { "name1" : "yang", "name2" : "gang" } }


> db.foo.find({"homer":2});           // 查詢包含特定內容的記錄
{ "_id" : ObjectId("5110d3e0af69ad089b234001"), "homer" : 2, "name" : { "name1" : "yang", "name2" : "gang" } }

MongoDB 建立示例:

> use test2                // test2資料庫不存在也可以執行,但不會立刻建立,需要執行insert操作時才建立
switched to db test2
> show dbs                 // 沒有test2,表明不是立刻建立
local	(empty)
test	0.0625GB
>
> db                       // 顯示當前正在使用的資料庫,test2不存在但正在使用中
test2
> db.createCollection("t2_test")     // 建立集合
{ "ok" : 1 }
> t={"name": "yanggang", "sex" : "male", "lover" : { "lover1" : "little dog", "lover2" : "fish" }}           // 初始化集合資料
{
	"name" : "yanggang",
	"sex" : "male",
	"lover" : {
		"lover1" : "little dog",
		"lover2" : "fish"
	}
}
> db.t2_test.insert(t)            // 插入資料,此刻才會建立test2資料庫
> db.t2_test.find()               // 查詢
{ "_id" : ObjectId("5110d685af69ad089b234002"), "name" : "yanggang", "sex" : "male", "lover" : { "lover1" : "little dog", "lover2" : "fish" } }
> show dbs                        // 檢視資料庫,多了test2
local	(empty)
test	0.0625GB
test2	0.0625GB

MongoDB 刪除示例:

> show collections        // 顯示集合
system.indexes
t2_test
> db.t2_test.drop()       // 刪除集合t2_test
true
> show collections        // 驗證刪除成功
system.indexes
> db.test2.remove()
> show dbs                // 顯示資料庫
local	(empty)
test	0.0625GB
test2	0.0625GB
> db                      // 顯示當前資料庫
test2
> db.dropDatabase()       // 刪除資料庫
{ "dropped" : "test2", "ok" : 1 }
> show dbs                // 驗證刪除成功
local	(empty)
test	0.0625GB

MongoDB 索引

> db.foo.find()
{ "_id" : ObjectId("5110ca1aaf69ad089b233fff"), "homer" : 222 }
{ "_id" : ObjectId("5110caffaf69ad089b234000"), "homer" : 222 }
{ "_id" : ObjectId("5110d3e0af69ad089b234001"), "homer" : 2, "name" : { "name1" : "yang", "name2" : "gang" } }
> db.foo.getIndexes()						// 檢視索引(_id為預設,不可刪除和修改)
[
	{
		"v" : 1,
		"key" : {
			"_id" : 1
		},
		"ns" : "test.foo",
		"name" : "_id_"
	}
]
> db.foo.ensureIndex({"homer":1})			// 新建索引
> db.foo.getIndexes()						// 驗證新建索引
[
	{
		"v" : 1,
		"key" : {
			"_id" : 1
		},
		"ns" : "test.foo",
		"name" : "_id_"
	},
	{
		"v" : 1,
		"key" : {
			"homer" : 1
		},
		"ns" : "test.foo",
		"name" : "homer_1"
	}
]
> db.foo.dropIndex({"homer":1})				// 刪除索引
{ "nIndexesWas" : 2, "ok" : 1 }
> db.foo.getIndexes()						// 驗證刪除索引
[
	{
		"v" : 1,
		"key" : {
			"_id" : 1
		},
		"ns" : "test.foo",
		"name" : "_id_"
	}
]

6, 應用示例

> db.foo_test.insert({"homer":1})
> for(var i = 1; i<=5; i++) db.foo_test.save({"homer":2, "score":i})            // 陣列生成
> db.foo_test.find()
{ "_id" : ObjectId("5111016cc0e386db7d954ae7"), "homer" : 1 }
{ "_id" : ObjectId("5111030f0e2d3a50c56b49a9"), "homer" : 2, "score" : 6 }
{ "_id" : ObjectId("511103200e2d3a50c56b49aa"), "homer" : 2, "score" : 1 }
{ "_id" : ObjectId("511103200e2d3a50c56b49ab"), "homer" : 2, "score" : 2 }
{ "_id" : ObjectId("511103200e2d3a50c56b49ac"), "homer" : 2, "score" : 3 }
{ "_id" : ObjectId("511103200e2d3a50c56b49ad"), "homer" : 2, "score" : 4 }
{ "_id" : ObjectId("511103200e2d3a50c56b49ae"), "homer" : 2, "score" : 5 }
> 
> var cursor = db.foo_test.find(); while(cursor.hasNext())printjson(cursor.next());		// 遍歷陣列
{ "_id" : ObjectId("5111016cc0e386db7d954ae7"), "homer" : 1 }
{ "_id" : ObjectId("5111030f0e2d3a50c56b49a9"), "homer" : 2, "score" : 6 }
{ "_id" : ObjectId("511103200e2d3a50c56b49aa"), "homer" : 2, "score" : 1 }
{ "_id" : ObjectId("511103200e2d3a50c56b49ab"), "homer" : 2, "score" : 2 }
{ "_id" : ObjectId("511103200e2d3a50c56b49ac"), "homer" : 2, "score" : 3 }
{ "_id" : ObjectId("511103200e2d3a50c56b49ad"), "homer" : 2, "score" : 4 }
{ "_id" : ObjectId("511103200e2d3a50c56b49ae"), "homer" : 2, "score" : 5 }
> 
> var cursor = db.foo_test.find(); printjson(cursor[4])							// 查詢(迭代)
{ "_id" : ObjectId("511103200e2d3a50c56b49ac"), "homer" : 2, "score" : 3 }
> var arr = db.foo_test.find().toArray(); arr[5]								// 查詢(陣列)
{ "_id" : ObjectId("511103200e2d3a50c56b49ad"), "homer" : 2, "score" : 4 }
> db.foo_test.find().limit(3)													// 查詢(前三)
{ "_id" : ObjectId("5111016cc0e386db7d954ae7"), "homer" : 1 }
{ "_id" : ObjectId("5111030f0e2d3a50c56b49a9"), "homer" : 2, "score" : 6 }
{ "_id" : ObjectId("511103200e2d3a50c56b49aa"), "homer" : 2, "score" : 1 }


參考推薦:

相關推薦

win10+mongodb安裝配置

-i mongod 安裝mongodb 模式 all 配置文件 bpa app install 剛入職新公司,用的mongodb,所以最近開始學習研究mongodb。 mongo的入門學習資料在http://www.runoob.com/mongodb/mongodb-tu

MongoDB 安裝配置

選擇 選項 配置文件 int mongodb 代碼 god inf www. s 註:本機環境-win7 sp1,安裝3.6版本的mongo會卡在一個地方,無法繼續,查資料後安裝3.4版本即可正常安裝,小夥伴們註意了! 1:下載安裝 下載地址:https://

mongodb安裝配置以及其他基礎操作

mongodb最近公司有個項目要用mongodb,之前沒搞過,今天臨時磨刀上陣,花了半天時間研究,中間有遇到幾個坑寫出來分享給大家。tar -zxf mongodb-linux-x86_64-v3.6.3.tgzcp -pr mongodb-linux-x86_64-v3.6.3 /usr/local/mon

MongoDB安裝配置及使用

1、安裝配置:https://www.cnblogs.com/ymwangel/p/5859453.html 2、使用 from pymongo import MongoClient #連線 conn = MongoClient('127.0.0.1', 27017) #進入資料庫

mongodb 安裝配置(linux/windows)

 windows上出現的錯誤:  D:\MongoDB\bin>mongo.exe --dbpath d:\data\db  Error parsing command line: unrecongised option '--dbpath' &nbs

mongodb安裝配置啟動踩的坑

啟動 官網下載 inf mongo net tails god find get 網上的教程那是又愛又恨,到了自己手裏怎麽搞都不行,踩著前人的腳步,自己再做個總結。 https://blog.csdn.net/qq_41109668/article/details/8290

windows下php mongodb 安裝配置使用查詢

這幾天參加了一個創意馬拉松大賽,雖然沒拿什麼獎,重在參與嘛 終於有機會實踐mongodb資料庫了,以前只是自己配置裝著玩玩 作者:風來了.呆狐狸 環境:window10 64 +php5.5.x+mysql5.7.x+mongodb2.6.x mongod安裝 1.下載 h

Linux下單節點MongoDB安裝配置

1、下載所需版本進入MongoDB官網下載頁面,個人認為社群版能夠滿足需求我的虛擬機器裝的是CentOS7,所以選擇“Linux 64-bit legacy x64”,然後點選“All Version Binaries”,選擇滿足需求的版本;我下載的是“mongodb-lin

Linux下MongoDB 安裝配置詳解

1.MongoDB簡單說明   a MongoDB是由C++語言編寫的一個基於分散式檔案儲存的開源資料庫系統,它的目的在於為WEB應用提供可擴充套件的高效能資料儲存解決方案。   b MongoDB是一個介於關係型資料庫和非關係型資料庫之間的產品,是非關係型資料庫當中功能

linux系統mongodb安裝配置

下載rpm包1 解壓rpm包將解壓目錄移動到安裝目錄tar -zxvf mongodb-linux-x86_64-3.2.8.tgz    mv  mongodb-linux-x86_64-3.2.8 /usr/local/mongodb2 在mongodb目錄下新建兩個目錄

MongoDB安裝配置及CRUD操作

1.下載 https://www.mongodb.com/download-center 本文下載版本:Windows Server 2008 R2 64-bit 2.安裝 預設安裝路徑:C:\Program Files\MongoDB\Server\3.2\bin 3.將

Linux下MongoDB安裝配置

MongoDB 是由C++語言編寫的,是一個基於分散式檔案儲存的開源資料庫系統。 MongoDB 將資料儲存為一個文件,資料結構由鍵值(key=>value)對組成。MongoDB 文件類似於 JSON 物件。欄位值可以包含其他文件,陣列及文件陣列。 MongoDB 中基本的概念是文件

MongoDB安裝配置、CRUD基本教程

MongoDB用法簡介 官方文件地址: 官方文件 下載安裝 首先下載安裝MongoDB。 然後配置環境變數:將安裝目錄 Server下的bin目錄新增到環境變數,如:E:\MongoDB\Ser

MongoDB 安裝配置

MongoDB 是一個高效能,開源,無模式的文件型資料庫,採用C++開發,是當前NoSQL資料庫中比較熱門的一種,在許多場景下可用於替代傳統的關係型資料庫或鍵/值儲存方式MongoDB使用BSON作為資料儲存和傳輸的格式,BSON是一種類似JSON的二進位制序列化文件,支援巢

window下MongoDB配置安裝

ets ann sock important sof hot sys support 環境 前言 MongoDB 是一個基於分布式文件存儲的數據庫。由C++語言編寫,支持Windows,Linux,OSX,Solaris等平臺,默認端口為27017,是一個效率非常高的no

【一】MongoDB安裝配置

.org root 終端 配置 conn tin serve cal 數據文件 一、MongoDB安裝 1、下載並解壓 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.0.tgz

windos10安裝mongodb配置

表示 baidu back enable 管理 行數據 restrict con 日誌   想了想還是把這個寫上吧,畢竟網上的教程有不少坑的。   首先下載mongodb,如果你嫌官網慢,那麽你可以去我的百度雲下載 鏈接:http://pan.baidu.com/s/1pK

MongoDB 安裝配置使用

出現 fig program down 技術分享 star idt 技術 exe 【前言】   Mongodb是一款nosql數據庫,關於nosql 以及 mongodb本文不進行介紹,在數據庫的選型方面,本人說是在機緣巧合之下選擇了mongodb,並且擬使用m

mongodb安裝配置,遇到問題和解決方法

href 如果 小時 占用 gsm 你會 mongo 查看 基本 自己不知道怎麽的,心血來潮想重新來安裝和配置一下mongodb,之前自己也是按照別人的來整的,印象不深刻。第二遍安裝配置遇到很多問題。 弄了兩個多小時,期間遇到很多問題: 遇到的主要問題 1.拒絕訪問: 解決

win10安裝mongodb配置mongodb的基本使用(node環境)

function ase mov bsp .config 配置 bin 位置 保存數據 mongodb安裝  下載地址: https://www.mongodb.com/download-center 下載後,我們點擊mongodb-win32-x86_64-2008plu