1. 程式人生 > >linux下mongodb的安裝及使用

linux下mongodb的安裝及使用

一、安裝

1)下載mongodb-linux-x86_64-3.0.5.tgz檔案

2)解壓:tar –xzvf mongodb-linux-x86_64-3.0.5.tgz

3)移動位置:mv mongodb-linux-x86_64-3.0.5    /usr/local/mongodb/

4)啟動mongo:

#建立資料資料夾和日誌檔案

mkdir data log

touch mongodb.log

#啟動mongodb,有通過配置檔案或直接設定引數兩種方式

./mongod --dbpath=./mongodb/data/ --logpath=./mongodb/data/mongodb.log --logappend  --fork&

或者./mongod –f mongodb.conf

mongodb.conf檔案的內容:

dbpath=/usr/local/mongodb/data/    #資料儲存路徑

logpath=/usr/local/mongodb/data/mongodb.log     #日誌儲存路徑

logappend=true 

fork=on           #後臺啟動

port=12345       #埠(預設埠27017)

auth=false        #是否需要身份驗證

5)關閉mongo

方式一.進入mongo命令列執行db.shutdownServer()

方式二. 直接用ps命令查詢到mongodb對應的程序號,再使用kill命令殺死程序

6)  問題解決

如果在虛擬機器上啟動mongodb,很可能出現--fork子程序啟動不了,查詢日誌發現提示沒有足夠的空間for journal

錯誤提示:child process failed,exited with error number 100

解決辦法:啟動時加上--smallfiles(./mongod--fork --dbpath=/usr/local/mongodb/data/--logpath=/usr/local/mongodb/data/mongodb.log –logappend--smallfiles

二、連線和授權

1. 連線資料庫

1)mongo   localhost:27017/testdb -u  myusername -p myusername

testdb:需要連線的資料庫名

myusername:使用者名稱

myusername:使用者密碼

localhost:連線的主機,也可以是其他機器的ip

如果mongodb啟動時不需要身份驗證,即auth=false,則可用方式2)進行連線。

2)mongo 192.168.1.127:12345


2.使用者管理

1)新增使用者

舊版本的mongodb:

db.adduser(“user1”)

db.adduser(“user1”,”mypassword”,true)(使用者名稱,密碼,是否只讀)

db.removeUser(“user1”)

3.0以上版本的mongodb已廢棄adduser方法,改用createUser方法:

db.createUser({“user”:”user1”,”pwd:”123”,”roles”:[“dbAdmin”]})

db.createUser({user:”iot1”,pwd:”iot2”,roles:[“dbOwner”]}

2)刪除使用者

db.dropUser(“user1”)

3)  檢視所有使用者或角色

show users

show roles

3. 授權方式

use admin

db.createUser({“user”:”testuser”,”mypassword:”iot”,”roles”:[“dbOwner”]})

db.auth(“testuser”,”mypassword”)(返回1表示已通過驗證)

三、初始化

1.     建立資料庫

mongodb沒有直接建立資料庫的命令,操作方式:

use  newtestdb,之後做一些操作,例如建立一個集合(表):db.newtestdb.createCollection(“user”,{“name”:20,“password”:20}),即可成功建立一個名為newtestdb的資料庫了。


2.     建立集合

db.createCollection(“user”)

db.createCollection(“user”,{capped: <Boolean>,autoIndexId: <Boolean>, size: <number>, max <number>}})

3.    匯入匯出資料

1)  mongoimport、mongoexport匯入匯出資料(Json格式)

mongoimport匯入檔案:

mongoimport –u iot1 –p iot1 –d iot –c openapi_info --file openapi_info.json

mongoexport匯出檔案:

mongoexport –u iot1 –p iot1 –d iot –c openapi_info --file openapi_info.json

-u:mongodb使用者名稱

-p:使用者密碼

-d:資料庫名

-c:需要匯出的資料集(表)名稱

--file:匯出的檔名

2)  Mongorestore、Mongodump匯入匯出資料(bson格式)

Mongorestore匯入資料夾內的資料

mongorestore.exe -h 192.168.1.203:20000 -u clib -p clib -d clib --dir library

-h:主機ip+mongodb啟動埠

-u:mongodb使用者名稱

-p:使用者密碼

--dir:即將匯入的資料檔案所在目錄

mongodump匯出檔案

mongodump.exe –d library –o library

mongodump –d library


四、  修改、新增、刪除集合資料

1、新增記錄

db.users.save({name: ‘zhangsan’, age: 25, sex: true});

新增的資料的資料列,沒有固定,根據新增的資料為準

2、更新記錄

db.users.update({age: 25}, {$set: {name: 'newName'}},false, true);

相當於:update users set name = ‘newName’ where age = 25;

db.users.update({name: 'Li'}, {$inc: {age: 50}}, false,true);

相當於:update users set age = age + 50 where name = ‘Li’;

db.users.update({name: 'Li'}, {$inc: {age: 50}, $set:{name: 'hoho'}}, false, true);

相當於:update users set age = age + 50, name = ‘newname’ wherename = ‘Li’;

3、刪除記錄

db.users.remove({age: 132});

4、查詢記錄

1)查詢所有記錄

db.userInfo.find();

相當於:select* from userInfo;

預設每頁顯示20條記錄。

 2)過濾掉重複資料

db.userInfo.distinct("name");

會過濾掉name中的相同資料

相當於:select distict name from userInfo;

 3)按條件查詢

db.userInfo.find({"age": 22});

相當於: select * from userInfo where age = 22;


db.userInfo.find({age: {$gt: 22}});

相當於:select * from userInfo where age >22;


db.userInfo.find({age: {$lt: 22}});

相當於:select * from userInfo where age <22;

db.userInfo.find({name: /mongo/});

相當於:select * from userInfo where name like ‘%mongo%’;


db.userInfo.find({name: /^mongo/});

相當於:select * from userInfo where name like ‘mongo%’;


db.userInfo.find({}, {name: 1, age: 1});

相當於:select name, age from userInfo;