標籤:des style blog http color io os 使用 ar
http://www.mongodb.org/
Agile and Scalable
MongoDB (from "humongous") is an open-source document database, and the leading NoSQL database. Written in C++, MongoDB features:
- Document-Oriented Storage »
JSON-style documents with dynamic schemas offer simplicity and power.
- Full Index Support »
Index on any attribute, just like you‘re used to.
- Replication & High Availability »
Mirror across LANs and WANs for scale and peace of mind.
- Auto-Sharding »
Scale horizontally without compromising functionality.
- Querying »
Rich, document-based queries.
- Fast In-Place Updates »
Atomic modifiers for contention-free performance.
- Map/Reduce »
Flexible aggregation and data processing.
- GridFS »
Store files of any size without complicating your stack.
- MongoDB Management Service »
Monitoring and backup designed for MongoDB.
- Partner with MongoDB »
Reduce cost, accelerate time to market, and mitigate risk with proactive support and enterprise-grade capabilities.
關於mongodb的好處,優點之類的這裡就不說了,唯一要講的一點就是mongodb中有三元素:資料庫,集合,文檔,其中“集合”
就是對應關聯式資料庫中的“表”,“文檔”對應“行”。
一: 下載
上MongoDB官網 ,我們發現有32bit和64bit,這個就要看你系統了,不過這裡有兩點注意:
①:根據業界規則,偶數為“穩定版”(如:1.6.X,1.8.X),奇數為“開發版”(如:1.7.X,1.9.X),這兩個版本的區別相信大家都知道吧。
②:32bit的mongodb最大隻能存放2G的資料,64bit就沒有限制。
①:啟動之前,我們要給mongodb指定一個檔案夾,這裡取名為”db",用來存放mongodb的資料。
②:微軟徽標+R,輸入cmd,首先找到“mongodb”的路徑,然後運行mongod開啟命令,同時用--dbpath指定資料存放地點為“db”檔案夾。
③:最後要看下是否開啟成功,的資訊中獲知,mongodb採用27017連接埠,那麼我們就在瀏覽器裡面鍵入“http://localhost:27017/”,
開啟後,mongodb告訴我們在27017上Add 1000可以用http模式查看mongodb的管理資訊。
由於是開篇,就大概的說下基本的“增刪查改“,我們再開一個cmd,輸入mongo命令開啟shell,其實這個shell就是mongodb的用戶端,
同時也是一個js的編譯器,預設串連的是“test”資料庫。
2、切換/建立資料庫
>use yourDB;
當建立一個集合(table)的時候會自動建立當前資料庫
查詢所有資料庫
show dbs;
查看當前使用的資料庫
db.getName();
db;
db和getName方法是一樣的效果,都可以查詢當前使用的資料庫
9、顯示當前db狀態
db.stats();
2 添加windows系統服務
運行cmd.exe
> cd D:\mongodb\bin
> D:\mongodb\bin>mongod --dbpath "D:\mongodb\data\db" --logpath "D:\mongodb\log\mongo.log" --install --serviceName "MongoDB"
服務名為MongoDB
運行命令成功為如:
引時服務已經安裝成功,運行
>NET START MongoDB (開啟服務)
>NET stop MongoDB (關閉服務)
3 關閉資料庫
通過命令關閉,盡量不要直接關閉服務,防止磁碟寫入未完成導致資料丟失
>use admin
>db.shutdownServer();
<1> insert 操作
好,資料庫有了,下一步就是集合,這裡就取集合名為“person”,要注意的就是文檔是一個json的擴充(Bson)形式。
<2> find 操作
我們將資料插入後,肯定是要find出來,不然插了也白插,這裡要注意兩點:
① “_id": 這個欄位是資料庫預設給我們加的GUID,目的就是保證資料的唯一性。
② 嚴格的按照Bson的形式書寫文檔,不過也沒關係,錯誤提示還是很強大的。
<3> update操作
update方法的第一個參數為“尋找的條件”,第二個參數為“更新的值”,學過C#,相信還是很好理解的。
<4> remove操作
remove中如果不帶參數將刪除所有資料,呵呵,很危險的操作,在mongodb中是一個不可撤回的操作,三思而後行。
一: Insert操作
上一篇也說過,文檔是採用“K-V”格式儲存的,如果大家對JSON比較熟悉的話,我相信學mongodb是手到擒來,我們知道JSON裡面Value
可能是“字串”,可能是“數組”,又有可能是內嵌的一個JSON對象,相同的方式也適合於BSON。
常見的插入操作也就兩種形式存在:“單條插入”和“批量插入”。
① 單條插入
先前也說了,mongo命令開啟的是一個javascript shell。所以js的文法在這裡面都行得通,看起來是不是很牛X。
② 批量插入
這玩意跟“單條插入”的差異相信大家應該知道,由於mongodb中沒有提供給shell的“批量插入方法”,沒關係,各個語言的driver都打通
了跟mongodb內部的批量插入方法,因為該方法是不可或缺的,如果大家非要類比下批量插入的話,可以自己寫了for迴圈,裡面就是insert。
二:Find操作
日常開發中,我們玩查詢,玩的最多的也就是二類:
①: >, >=, <, <=, !=, =。
②:And,OR,In,NotIn
這些操作在mongodb裡面都封裝好了,下面就一一介紹:
<1>"$gt", "$gte", "$lt", "$lte", "$ne", "沒有特殊關鍵字",這些跟上面是一一對應的,舉幾個例子。
<2> "無關鍵字“, "$or", "$in","$nin" 同樣我也是舉幾個例子
<3> 在mongodb中還有一個特殊的匹配,那就是“Regex”,這玩意威力很強的。
<4> 有時查詢很複雜,很蛋疼,不過沒關係,mongodb給我們祭出了大招,它就是$where,為什麼這麼說,是因為$where中的value
就是我們非常熟悉,非常熱愛的js來助我們一馬平川。
三:Update操作
更新操作無非也就兩種,整體更新和局部更新,使用場合相信大家也清楚。
<1> 整體更新
不知道大家可還記得,我在上一篇使用update的時候,其實那種update是屬於整體更新。
<2> 局部更新
有時候我們僅僅需要更新一個欄位,而不是整體更新,那麼我們該如何做呢?easy的問題,mongodb中已經給我們提供了兩個
修改器: $inc 和 $set。
① $inc修改器
$inc也就是increase的縮寫,學過sql server 的同學應該很熟悉,比如我們做一個線上使用者狀態記錄,每次修改會在原有的基礎上
自增$inc指定的值,如果“文檔”中沒有此key,則會建立key,下面的例子一看就懂。
② $set修改器
啥也不說了,直接上代碼
<3> upsert操作(mysql中replace into和這個一樣)
這個可是mongodb創造出來的“詞”,大家還記得update方法的第一次參數是“查詢條件”嗎?,那麼這個upsert操作就是說:如果我
沒有查到,我就在資料庫裡面新增一條,其實這樣也有好處,就是避免了我在資料庫裡面判斷是update還是add操作,使用起來很簡單
將update的第三個參數設為true即可。
<4> 批次更新
在mongodb中如果匹配多條,預設的情況下只更新第一條,那麼如果我們有需求必須批次更新,那麼在mongodb中實現也是很簡單
的,在update的第四個參數中設為true即可。例子就不舉了。
今天跟大家分享一下mongodb中比較好玩的知識,主要包括:彙總,遊標。
一: 彙總
常見的彙總操作跟sql server一樣,有:count,distinct,group,mapReduce。
<1> count
count是最簡單,最容易,也是最常用的彙總工具,它的使用跟我們C#裡面的count使用簡直一模一樣。
<2> distinct
這個操作相信大家也是非常熟悉的,指定了誰,誰就不能重複,直接。
MongoDB 安裝和即基本操作