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;