mongodb的安裝 1,下載安裝包: http://www.runoob.com/mongodb/mongodb-window-install.html 2,安裝至: D:\MongoDB,將D:\MongoDB\bin目錄加入環境變數 3,在 D:\MongoDB下新建文件夾 : 4,直接在命令 ...
mongodb的安裝
1,下載安裝包: http://www.runoob.com/mongodb/mongodb-window-install.html
2,安裝至: D:\MongoDB,將D:\MongoDB\bin目錄加入環境變數
3,在 D:\MongoDB下新建文件夾 :
D:\MongoDB\data\db D:\MongoDB\log\mongod.log
4,直接在命令行指定配置:
mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\MongoDB\log\mongod.log --logappend --dbpath D:\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
5,啟動\關閉服務:
net start MongoDB net stop MongoDB
6,登錄:
mongo
賬號的創建
#1、創建賬號 use admin db.createUser( { user: "root", pwd: "123", roles: [ { role: "root", db: "admin" } ] } ) use test db.createUser( { user: "www", pwd: "123", roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "db1" } ] } ) #2、重啟資料庫 mongod --remove
mongod --bind_ip 0.0.0.0 --port 27017 --logpath D:\MongoDB\log\mongod.log --logappend --dbpath D:\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth
#3、登錄:註意使用雙引號而非單引號
mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin"
也可以在登錄之後用db.auth("賬號","密碼")登錄 mongo use admin db.auth("root","123")
基本數據類型
1、在概念上,MongoDB的文檔與Javascript的對象相近,因而可以認為它類似於JSON。JSON(http://www.json.org)是一種簡單的數據表示方式:其規範僅用一段文字就能描述清楚(其官網證明瞭這點),且僅包含六種數據類型。
2、這樣有很多好處:易於理解、易於解析、易於記憶。然而從另一方面說,因為只有null、布爾、數字、字元串、數字和對象這幾種數據類型,所以JSON的表達能力有一定的局限。
3、雖然JSON具備的這些類型已經具有很強的表現力,但絕大數應用(尤其是在於資料庫打交道時)都還需要其他一些重要的類型。例如,JSON沒有日期類型,這使得原本容易日期處理變得煩人。另外,JSON只有一種數字類型,無法區分浮點數和整數,更別區分32位和64位了。再者JSON無法表示其他一些通用類型,如正則表達式或函數。
4、MongoDB在保留了JSON基本鍵/值對特性的基礎上,添加了其他一些數據類型。在不同的編程語言下,這些類型的確切表示有些許差異。下麵說明瞭MongoDB支持的其他通用類型,以及如何正在文檔中使用它們
#1、null:用於表示空或不存在的欄位 d={'x':null} #2、布爾型:true和false d={'x':true,'y':false} #3、數值 d={'x':3,'y':3.1415926} #4、字元串 d={'x':'www'} #5、日期 d={'x':new Date()} d.x.getHours() #6、正則表達式 d={'pattern':/^www.*?nb$/i} 正則寫在//內,後面的i代表: i 忽略大小寫 m 多行匹配模式 x 忽略非轉義的空白字元 s 單行匹配模式 #7、數組 d={'x':[1,'a','v']} #8、內嵌文檔 user={'name':'www','addr':{'country':'China','city':'YT'}} user.addr.country #9、對象id:是一個12位元組的ID,是文檔的唯一標識,不可變 d={'x':ObjectId()}
5、_id和ObjectId
MongoDB中存儲的文檔必須有一個"_id"鍵。這個鍵的值可以是任意類型,預設是個ObjectId對象。 在一個集合里,每個文檔都有唯一的“_id”,確保集合里每個文檔都能被唯一標識。 不同集合"_id"的值可以重覆,但同一集合內"_id"的值必須唯一 #1、ObjectId ObjectId是"_id"的預設類型。因為設計MongoDb的初衷就是用作分散式資料庫,所以能夠在分片環境中生成 唯一的標識符非常重要,而常規的做法:在多個伺服器上同步自動增加主鍵既費時又費力,這就是MongoDB採用 ObjectId的原因。 ObjectId採用12位元組的存儲空間,是一個由24個十六進位數字組成的字元串 0|1|2|3| 4|5|6| 7|8 9|10|11 時間戳 機器 PID 計數器 如果快速創建多個ObjectId,會發現每次只有最後幾位有變化。另外,中間的幾位數字也會變化(要是在創建過程中停頓幾秒)。 這是ObjectId的創建方式導致的,如上圖 時間戳單位為秒,與隨後5個位元組組合起來,提供了秒級的唯一性。這個4個位元組隱藏了文檔的創建時間,絕大多數驅動程式都會提供 一個方法,用於從ObjectId中獲取這些信息。 因為使用的是當前時間,很多用戶擔心要對伺服器進行時鐘同步。其實沒必要,因為時間戳的實際值並不重要,只要它總是不停增加就好。 接下來3個位元組是所在主機的唯一標識符。通常是機器主機名的散列值。這樣就可以保證不同主機生成不同的ObjectId,不產生衝突 接下來連個位元組確保了在同一臺機器上併發的多個進程產生的ObjectId是唯一的 前9個位元組確保了同一秒鐘不同機器不同進程產生的ObjectId是唯一的。最後3個位元組是一個自動增加的 計數器。確保相同進程的同一秒產生的 ObjectId也是不一樣的。 #2、自動生成_id 如果插入文檔時沒有"_id"鍵,系統會自幫你創建 一個。可以由MongoDb伺服器來做這件事。 但通常會在客戶端由驅動程式完成。這一做法非常好地體現了MongoDb的哲學:能交給客戶端驅動程式來做的事情就不要交給伺服器來做。 這種理念背後的原因是:即便是像MongoDB這樣擴展性非常好的資料庫,擴展應用層也要比擴展資料庫層容易的多。將工作交給客戶端做就 減輕了資料庫擴展的負擔。View Code
資料庫操作
#1、增 use config #如果資料庫不存在,則創建資料庫,否則切換到指定資料庫。 #2、查 show dbs #查看所有 可以看到,我們剛創建的資料庫config並不在資料庫的列表中, 要顯示它,我們需要向config資料庫插入一些數據。 db.table1.insert({'a':1}) #3、刪 use config #先切換到要刪的庫下 db.dropDatabase() #刪除當前庫
集合操作
#1、增 當第一個文檔插入時,集合就會被創建 > use database1 switched to db database1 > db.table1.insert({'a':1}) WriteResult({ "nInserted" : 1 }) > db.table2.insert({'b':2}) WriteResult({ "nInserted" : 1 }) #2、查 > show tables table1 table2 #3、刪 > db.table1.drop() true > show tables table2