mongodb作為非關係型資料庫(NoSql),它的可以由以下的結構組成,文檔,集合,資料庫。
其中mongodb的基本單元是文檔,這類似於關係型資料庫中的行,但從深處將,文檔又比行要複雜的多。文檔的格式類似於javascript中的json物件類型,如果你有 json的基礎,mongodb對你來說,不會顯得太陌生。文檔是由多個索引值有序的組合在一起
集合類似關係型資料庫中的表,多個文檔組成集合,但是與關係型資料庫不同的是,文檔中的索引值對是可以隨意排放的,也就是說,集合中的文檔是可以任意去設定的,這取決於你的需要,不過相信應該沒有人會將不同的資料放到一個集合裡面。
最後呢,多個集合又組成了資料庫。
OK,現在是不是很明白了,mongodb並不像想象中的那麼難以理解,如果真是那樣,開發人員還開發mongodb做什麼。
下面說一些cmd下對mongodb的操作:
首先要確保服務已經開啟。
d:\mongodb\bin>mongo
現在就已經連結成功了,之後就是對mongodb進行的一系列操作。
查看資料庫列表
> show dbs
而如果要選擇資料庫,就如同mysql一樣。
> use db
在這裡需要說的是,use既可以使用既有的資料庫,又可以建立另一個名稱的資料庫,打個比方,如果我的mongodb執行個體中沒有db的資料庫,但是通過 use db,會建立一個名稱為db的空白資料庫。
在此通過db命令可以查看現在所選擇的db
> db
> show collections
這條語句將顯示出所選資料庫的集合。
下面對news進行操作,下面兩個是增加和尋找
> db.news.insert({name:'1'})
> db.news.find({name:'1'})
如果這樣看,可能會認為我的文件結構就是這樣的,事實上不是的,下面我通過取出一條原先db集合中的文檔
> db.news.findOne({name:{$ne:'1'}})
這說明了,集合中文檔的結構是可以不一致的,但是不一致的結構會將你的網站,你的程式弄得亂糟糟的,最後你會不得不重新規劃資料結構,如果因此而說mongodb處理能力弱,就真的是不好了。
上面說了最簡單的增加和尋找,現在說修改以及刪除。
刪除操作:
> db.news.remove({_id: ObjectId("53edd90a9c937c963d78d0e1")})
這是將news集合中_id 等於ObjectId("53edd90a9c937c963d78d0e1")的文檔刪除,這裡的_id就如mysql資料庫中的主鍵,但是他們的類型不同
由此可以看到,news集合中_id 等於ObjectId("53edd90a9c937c963d78d0e1")的文檔已經被刪除。這與mysql中的:‘ delete form 表名 where id = xxx ’ 效果是一致的。
mongodb中的修改操作也不難使用,通過update進行實現,他需要至少兩個參數,一個是更新的限制條件,另一個是新的文檔。
我先增加一條文檔
> post={'name':'tom',age:12}
> db.news.insert(post)
> db.news.find({age:12}).limit(1)
現在我插入了一條新的文檔,但是現在呢,我需要給這個文檔添加一個新的屬性
> post.address='中國'
> post.love=['動畫片','玩遊戲']
> db.news.update({name:'tom',age:12},post)
mongodb的修改操作還可以通過與$set等實現
例如:我將tom的address改為美國
> db.news.update({name:'tom',age:12},{$set:{address:'美國'}})
好了,關於mongodb的增刪改查就說這麼多了,當然,mongodb還有很多彙總用法,這個在之後的文章中會提到。
註:文中有些截圖與實際的資料不符,是因為文章發布後很多圖片不顯示,之後又補上的圖片,但是原理是沒有錯的。