閱讀890 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Nodejs+Extjs+Mongodb開發第二天 Mongodb的簡單使用

一、環境及啟動

Mongodb直接下載回來解壓就能用。如,我解壓到app/mongo目錄下。並在appmongo目錄下那建data/db目錄用來存在mongodb數據庫數據的一個文件夾。


root用戶啟動mongodb,這裏如果不使用root用戶,第二次再次啟動的時候啟動不了。具體原因沒有找著。

cd app/mongo/
bin/mongod --dbpath data/db


進入mongo的shell:

./bin/mongo

關閉:
一種穩妥的停止MongoDB服務的方式就是使用shutdown命令,即{“shutdown” : 1},這是管理命令,要在admin數據庫下使用。shell提供了輔助函數,如下:


use admin

db.shutdownServer();

若MongoDB服務器是最為前台進程運行在終端,那麼可以直接關閉命令行窗口即可。


二、安全和認證

每個MongoDB實例中的數據庫可以有許多用戶,如果開啟了安全性檢查,則隻有數據庫認證用戶才能執行讀或者寫操作。在數據庫中添加用戶,如下所示:

use test

db.addUser(“test_user”, “1234”)


addUser()函數中的第三個參數為可選項true或者false,表示該用戶是否為隻讀用戶。


注意:addUser不僅能添加用戶,還能修改用戶口令或者隻讀狀態。


要開啟安全性檢查,重啟服務器,同時加--auth命令行選項。然後通過shell重新連接數據庫,操作如下:

use test
db.auth(“test_user”, “1234”)


之後用戶就可以在自己的權限範圍內進行操作了。
數據庫的用戶賬戶以文檔的形式存儲在system.users集合裏麵。文檔的結構如下:
 {“user” : username, “readOnly” : true, “pwd” : password hash}


其中password hash是根據用戶名和密碼生成的散列。


用戶認證時,服務器將認證和連接綁定來跟蹤認證。所以如果驅動程序或是工具使用了連接池或是因故障切換到另一個節點,所有認證用戶必須對每個新連接重新認證。有的驅動程序能夠將這步透明化,但要是沒有,就得手動完成了。


除了認證還有許多選項值得考慮來鎖定MongoDB實例。建議將MongoDB服務器布置在防火牆後或者布置在隻有應用服務器能訪問的網絡中。但要是MongoDB必須能被外麵訪問到的話,建議使用—bindip選項,可以指定mongod綁定到的本地IP地址。

例如,隻能從本機應用服務器訪問:

mongod –bindip localhost

三、簡單的使用

1、使用crm數據庫
use crm



2、為數據庫中的user集合(類似sql中的表),增加一條數據

db.user.insert({ "username" : "admin","password" : "1234",  "email" : "testuser1@testdomain.com" }) 


3、查詢user集合

db.user.find().pretty()


4、為user集合增加多條數據

stuff = [{ "username" : "test1","password" : "1234", "email" : "testuser2@testdomain.com" }, { "username" : "test2","password" : "1234", "email" : "testuser3@testdomain.com" }]

 db.user.insert(stuff);  


上麵操作的結果如下:
benben@benben:~/app/mongo/bin$ ./mongo
MongoDB shell version: 2.6.4
connecting to: test
> use crm
switched to db crm
> db.user.insert({ "username" : "admin","password" : "1234",  "email" : "testuser1@testdomain.com" }) 
WriteResult({ "nInserted" : 1 })
> db.user.find().pretty()  
{
	"_id" : ObjectId("53fc73bf784eb7aa025aeb31"),
	"username" : "admon",
	"password" : "1234",
	"email" : "testuser1@testdomain.com"
}
> stuff = [{ "username" : "test1","password" : "1234", "email" : "testuser2@testdomain.com" }, { "username" : "test2","password" : "1234", "email" : "testuser3@testdomain.com" }]
[
	{
		"username" : "test1",
		"password" : "1234",
		"email" : "testuser2@testdomain.com"
	},
	{
		"username" : "test2",
		"password" : "1234",
		"email" : "testuser3@testdomain.com"
	}
]
> db.user.insert(stuff);  
BulkWriteResult({
	"writeErrors" : [ ],
	"writeConcernErrors" : [ ],
	"nInserted" : 2,
	"nUpserted" : 0,
	"nMatched" : 0,
	"nModified" : 0,
	"nRemoved" : 0,
	"upserted" : [ ]
})
> db.user.find().pretty()
{
	"_id" : ObjectId("53fc73bf784eb7aa025aeb31"),
	"username" : "admon",
	"password" : "1234",
	"email" : "testuser1@testdomain.com"
}
{
	"_id" : ObjectId("53fc741f784eb7aa025aeb32"),
	"username" : "test1",
	"password" : "1234",
	"email" : "testuser2@testdomain.com"
}
{
	"_id" : ObjectId("53fc741f784eb7aa025aeb33"),
	"username" : "test2",
	"password" : "1234",
	"email" : "testuser3@testdomain.com"
}
> 


最後更新:2017-04-03 05:40:20

  上一篇:go C#中string的幾種轉換方法的異同——《讀你必須知道的.net》
  下一篇:go