mongodb是近幾年流行nosql資料庫中使用率最高的一種
mongodb與關聯式資料庫主要差在他是使用json儲存
事先不定義欄位,同時不保證一致性的資料庫
如果你需要很精確的數字與資料,需要交易或是rollback的功能,那就不適合使用mongodb
===安裝mongodb===
作業系統 ubuntu mongodb版本2.6
apt-get install mongodb
因為後面可能需要使用python進行操作,順便裝一下python的模組
apt-get install python-pymongo
安裝好啟動後預設是listen 27017 port,可以使用指令mongo進入
===基本操作===
一開始是沒有任何權限設定的,進入後可以查看資料庫以及資料表(collections)
show dbs(查看資料庫) show collections(查看資料表)
使用哪一個資料庫
use dbname
使用哪一個資料表
db.dbname.動作(find,update,insert,remove...)
===權限管理===
mongodb的的使用者是跟著資料庫走的,例如你有ABC三個資料庫
可以同時在三個資料庫都建立一個tszheng的帳號
在哪個資料庫新增帳號就是代表僅新增該資料庫的帳號,
use admin
db.addUser("username","passwd",true) #true為唯讀帳號,不加則可讀寫
新增完畢之後,還需要修改設定檔/etc/mongodb.conf
有一個#auth = true,將#拿掉後重啟mongodb
下次再進入就強制需要登入了,登入方式如下
mongo進入後(這時候已經沒辦法show dbs了,所以要記得dbname)
先選擇資料庫 use dbname
db.auth("dbname","passwd") (登入)
如果回應1就表示登入成功了
===資料===
如前面所說的,mongodb是用json的方式儲存資料,資料大概長得像下面
{
"_id" : ObjectId("5a7931de20be054518904450"),
"ip" : "1.2.3.4",
"datetime" : ISODate("2017-10-12T00:39:03Z"),
"resp_time" : NumberLong(4),
"type" : "udp",
"idc" : NumberLong(1)
}
每一筆資料都有一個ObjectId為key,如一開始說的,他的欄位不需要事先定義
欄位也很自由,你可以這筆資料有四個欄位,下一筆資料有六個欄位,都不會影響整個資料庫運作。
另外如果這個mongodb資料庫要對外開放連線,則要修改設定檔/etc/mongodb.conf
中的bind_ip,設定能夠連線進來的IP後重啟服務即可。
mongodb與關聯式資料庫主要差在他是使用json儲存
事先不定義欄位,同時不保證一致性的資料庫
如果你需要很精確的數字與資料,需要交易或是rollback的功能,那就不適合使用mongodb
===安裝mongodb===
作業系統 ubuntu mongodb版本2.6
apt-get install mongodb
因為後面可能需要使用python進行操作,順便裝一下python的模組
apt-get install python-pymongo
安裝好啟動後預設是listen 27017 port,可以使用指令mongo進入
===基本操作===
一開始是沒有任何權限設定的,進入後可以查看資料庫以及資料表(collections)
show dbs(查看資料庫) show collections(查看資料表)
使用哪一個資料庫
use dbname
使用哪一個資料表
db.dbname.動作(find,update,insert,remove...)
===權限管理===
mongodb的的使用者是跟著資料庫走的,例如你有ABC三個資料庫
可以同時在三個資料庫都建立一個tszheng的帳號
在哪個資料庫新增帳號就是代表僅新增該資料庫的帳號,
use admin
db.addUser("username","passwd",true) #true為唯讀帳號,不加則可讀寫
新增完畢之後,還需要修改設定檔/etc/mongodb.conf
有一個#auth = true,將#拿掉後重啟mongodb
下次再進入就強制需要登入了,登入方式如下
mongo進入後(這時候已經沒辦法show dbs了,所以要記得dbname)
先選擇資料庫 use dbname
db.auth("dbname","passwd") (登入)
如果回應1就表示登入成功了
===資料===
如前面所說的,mongodb是用json的方式儲存資料,資料大概長得像下面
{
"_id" : ObjectId("5a7931de20be054518904450"),
"ip" : "1.2.3.4",
"datetime" : ISODate("2017-10-12T00:39:03Z"),
"resp_time" : NumberLong(4),
"type" : "udp",
"idc" : NumberLong(1)
}
每一筆資料都有一個ObjectId為key,如一開始說的,他的欄位不需要事先定義
欄位也很自由,你可以這筆資料有四個欄位,下一筆資料有六個欄位,都不會影響整個資料庫運作。
另外如果這個mongodb資料庫要對外開放連線,則要修改設定檔/etc/mongodb.conf
中的bind_ip,設定能夠連線進來的IP後重啟服務即可。