MongoDB入門

一、基本概念

MongoDB中的幾個基本概念:數據庫,集合,文檔
數據庫
數據庫是一個物理容器集合。每個數據庫都有自己的一套文件系統上的文件。一個單一的MongoDB服務器通常有多個數據庫。

集合
集合是一組MongoDB的文檔。它相當於一個RDBMS表。收集存在於一個單一的數據庫。集合不執行模式。集合內的文檔可以有不同的領域。
通常情況下,一個集合中的所有文件是相同或相關的目的。

文檔
文檔是一組K - V對。文件動態模式。動態模式是指,在相同集合中的文檔不需要具有相同的字段或結構組的公共字段的集合的文檔,可以容納不同類型的數據。

二、mongodb命令

#啓動mongo服務端
mongod -dbpath="數據文件夾路徑"
#啓動客戶端
mongo localhost:27017

#創建數據庫
use mydb;
#刪除當前數據庫
db.dropDatabase();

#查詢所有數據庫
show dbs;
#查詢當前所在的數據庫
db;

 

創建集合有兩種方式
1.顯示創建
db.createCollection("person")
2.隱式創建
db.c1.insert({name:"haiou",desc:"baji"})//創建c1集合,同時插入數據

//顯示當前數據庫中的所有集合
show collections;//顯示person,c1和system.indexes
或show tables;

for(var i=0;i<100000;i++){
     db.person.insert({name:"liguannan",age:i});
}

db.person.find();//顯示所有的記錄(命令行中只會顯示20條記錄)

db.person.find().count();//統計記錄數

db.person.findOne();//查詢第一條記錄

db.person.find({age:19});//條件查詢:查詢age=19的記錄

db.person.find({age:19},{name:1});//過濾字段:結果只顯示name列

db.person.remove({age:19});//刪除

db.person.find().skip(1).limit(10);//分頁:從1開始,前10條

xx.sort({age:-1});//按照age降序:-1表示降序,1表示升序

 

三、Mongo數據庫的備份和恢復

Mongo數據庫的備份使用的命令是mongodump,數據庫的恢復使用的命令是mongorestore命令。

#將本地的foobar數據庫備份到F盤符下的mongoBackup目錄下。
mongodump -h localhost:27017 -d foobar -o f:/mongoBackup


現在我們可以將數據刪掉(db.dropDatabases()),然後使用恢復命令將數據恢復。

mongorestore -h dbhost -d dbname -directoryperdb dbdirectory

 

  • -h:Mongo所在服務器的地址
  • -d:需要恢復的數據庫實例,例如,test,當然這個名稱也可以和備份的時候不一樣,比如test2
  • -dirctoryperdb:備份數據庫所在的位置,例如:c:\data\dump\test
     

四、Mongo數據庫的導入與導出

Mongo數據庫的導出與導入分別使用的命令是mongoexport和mongoimport。
1.導出:
導出數據可以使用命令:

mongoexport -h dbhost -d dbname -c collectionName -o output
  • -h  數據庫地址
  • -d 指明使用的庫
  • -c 指明要導出的集合
  • -o 指明要導出的文件名
     
#將foobar數據庫中的user集合導出到F:\mongoExport.txt(也可以導出爲word,excel等)
mongoexport  -h localhost:27017 -d foobar -c user -o F://mongoExport.txt

導出的文件打開後格式如下:

{ "_id" : "66", "_class" : "com.yihaomen.mongodb.domain.User", "name" : "66", "age" : 66 }
{ "_id" : "88", "_class" : "com.yihaomen.mongodb.domain.User", "name" : "88", "age" : 88 }
{ "_id" : { "$oid" : "55dfb5a5880b548e0df8ef9f" }, "uid" : 1, "name" : "lisi", "age" : 18 }
{ "_id" : { "$oid" : "55dfb5b5880b548e0df8efa0" }, "uid" : 2, "name" : "wangwu", "age" : 19 }
{ "_id" : { "$oid" : "55dfb5c4880b548e0df8efa1" }, "age" : 21, "name" : "zhangsan", "uid" : 3 }


2.導入
導入數據可以使用命令:

mongoimport -h dbhost -d dbname -c collectionname 文件的地址...

參數說明:

  • -h  數據庫地址
  • -d 指明使用的庫
  • -c 指明要導入的集合

 

五、安全認證

每個MongoDB實例中的數據庫都可以有許多用戶。如果開啓了安全性檢查,則只有數據庫的認證用戶才能執行讀或者寫操作。
在認證的上下文中,MongoDB會將普通的數據作爲admin數據庫處理。admin數據庫中的用戶被視爲超級用戶(即管理員)。
在認證之後,管理員可以讀寫所有數據庫,執行特定的管理命令,如listDatabases和shutdown。在開啓安全檢查之前,一定要至少有一個管理員賬號。

在admin數據庫中創建管理員賬號:

use admin;
db.addUser(“root”,”root”);

在test數據庫中創建普通賬號:

use test;
db.addUser(“zhangsan”,”123”);
db.addUser(“lisi”,”123”,true);

注意:用戶zhangsan,密碼爲123,對test數據庫擁有讀寫權限
           用戶lisi,密碼爲123,對test數據庫擁有隻讀權限

重新啓動數據庫服務,並開啓安全檢查:

mongod --dbpath d:\mongo_data --auth

 

六、集羣

主從複製(主從集羣 )
爲了方便演示,可以在一臺計算機上來模擬主節點和從節點。在D盤創建兩個目錄master和slave,master目錄作爲主節點的數據文件的目錄,slave目錄作爲從節點的數據文件的目錄。
注意:主節點和從節點要指定不同的端口。
啓動主節點:mongod --dbpath d:\master --port 10000 --master
啓動從節點:mongod --dbpath d:\slave --port 10001 --slave --source localhost:10000

啓動成功後就可以連接主節點進行操作了,而這些操作會同步到從節點。

七、副本集

副本集就是有自動故障恢復功能的主從集羣。

mongoDB也可以配置成主從模式,但官方已經不建議使用主從模式了,替代方案是採用副本集的模式

主從集羣和副本集最大的區別就是副本集沒有固定的“主節點”;整個集羣會選出一個“主節點”,當其掛掉後,又在剩下的從節點中選中其他節點爲“主節點”,副本集總有一個活躍點(primary)和一個或多個備份節點(secondary)。

 

 

八、分佈式存儲

 

九、Spring整合Mongodb

文檔:
http://docs.spring.io/spring-data/data-document/docs/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章