什么是mongodb
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫和 非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。
mongodb的幾大優(yōu)勢
MongoDB是面向文檔的數(shù)據(jù)庫,不是關(guān)系型數(shù)據(jù)庫。
1、MongoDB有豐富的數(shù)據(jù)模型,基本的思路就是將原來“行”的概念換成更加靈活的“文檔”模型。一條記錄可以表示非常復(fù)雜的層次關(guān)系。
2、非常容易擴(kuò)展。面對數(shù)據(jù)量的不斷上漲,通常有兩種方案,一種是購買更好的硬件,別一種是分散數(shù)據(jù),進(jìn)行分布式的擴(kuò)展,前者有著非常大的缺點(diǎn),因?yàn)橛布ǔJ怯形锢順O限的,當(dāng)達(dá)到極限以后,處理能力就不可能再進(jìn)行擴(kuò)展了。所以建議的方式是使用集群進(jìn)行擴(kuò)展。MongoDB所采用的面向文檔的數(shù)據(jù)模型使其可以自動(dòng)在多臺(tái)服務(wù)器之間分割數(shù)據(jù)。它還可以平衡集群的數(shù)據(jù)和負(fù)載,自動(dòng)重排文檔。
3、豐富的功能。包括索引、存儲(chǔ)JavaScript、聚合、固定集合、文件存儲(chǔ)等。
4、卓越的性能。
5、方便的管理,除了啟動(dòng)數(shù)據(jù)庫服務(wù)器之外,幾乎沒有什么必要的管理操作。管理集群只需要知道有新增加的節(jié)點(diǎn),就會(huì)自動(dòng)集成和配置新節(jié)點(diǎn)。
mongodb的幾個(gè)基本概念
文檔
文檔是MongoDB中數(shù)據(jù)的基本單元,非常類似于關(guān)系數(shù)據(jù)庫管理系統(tǒng)中的行。
文檔是MongoDB的核心概念。多個(gè)鍵及其關(guān)聯(lián)的值有序地放置在一起便是文檔。
MongoDB以類JSON的格式來表示文檔,例如:
{"greeting":"hello mongodb!"}
以鍵值形式存儲(chǔ),值可以是不同的類型,比如字符串,整型等。
集合
集合就是一組文檔。類似于關(guān)系型數(shù)據(jù)庫中的表。
我們可以使用任意的UTF-8字符串來命名集合。
為了使組織結(jié)構(gòu)更好些,我們可以使用子集合。組織集合的一種慣例是使用“.”字符分開的按命名空間劃分的子集合。
數(shù)據(jù)庫
MongoDB中多個(gè)文檔組成集合,同樣多個(gè)集合可以組成數(shù)據(jù)庫。一個(gè)MongoDB實(shí)例可以承載多個(gè)數(shù)據(jù)庫,它們之間可視為完全獨(dú)立的。
數(shù)據(jù)庫名可以是任意UTF-8字符串。
除了一些規(guī)則外,有一些數(shù)據(jù)庫名是保留的,不能作為數(shù)據(jù)庫名,包括“admin”、“l(fā)ocal”、"config"。
32位win7下用虛機(jī)安裝64位ubuntu
如果是32位的ubuntu安裝起來很順利沒什么問題,但是到了安裝64位ubuntu的時(shí)候出問題了。
報(bào)錯(cuò)如下:
This kernel requires an x86-64 CPU, but only detected an i686 CPU.
Unable to boot - please use a kernel appropriate for your CPU.
解決辦法:
先下載一個(gè)cpu-z,我下載的地址是
http://www.xiazaiba.com/html/160.html
打開并且查看一下
如果顯示支持64位那么就應(yīng)該是bios里邊沒有進(jìn)行設(shè)置的原因了,重啟電腦進(jìn)入bios
找到 CPU ==> Intel(R) Virtualization Technology ==> 設(shè)置為 Enabled
注意:這之后要冷啟動(dòng)才能生效。
然后進(jìn)行系統(tǒng)重新安裝,一切正常。
啟動(dòng)mongodb
首先是下載和安裝,下載就到mongodb的官方網(wǎng)站上,在baidu或者google輸一下,基本上第一個(gè)就是,我的下載地址是:
http://www.mongodb.org/downloads
因?yàn)槭褂玫氖?4位的ubuntu,所以下載了64-bit的mongodb,下載后解壓縮。
到解壓后的bin目錄里執(zhí)行./mongod
提示路徑不存在,需要?jiǎng)?chuàng)建路徑,執(zhí)行mkdir -p /data/db,并授予權(quán)限。
然后重新執(zhí)行./mongod,正常啟動(dòng)。
在瀏覽器中輸入
可以獲得數(shù)據(jù)庫的管理信息。
shell中的CRUD
當(dāng)上面的啟動(dòng)完成之后可以就可以使用shell了,運(yùn)行./mongo,出現(xiàn)如下界面
輸入db可以看到,默認(rèn)連到test庫上
mongodb自帶了一個(gè)JavaScript Shell,可以通過命令行與mongodb實(shí)例進(jìn)行交互。
可以直接利用javascript進(jìn)行交互,也可以利用javascript中的函數(shù)和標(biāo)準(zhǔn)庫。
增加
假設(shè)插入一條博客的信息有標(biāo)題、文章內(nèi)容和日期。
也就是說插入了一個(gè)post文件到blog集合中。
查看一下是否插入成功
可以看到查詢的記錄,其中_id是自動(dòng)加入的記錄。
讀取
可以使用findOne()查看其中的一個(gè)文檔。
上面說到的find()是查詢所有記錄的意思。find和findOne都可以接受文檔形式的查詢條件。
更新
更新操作其實(shí)就是update函數(shù)。
新增加備注
執(zhí)行更新,需要加上條件
查看結(jié)果
刪除
刪除就是指remove函數(shù)。
刪除完文檔post之后,查看blog集合已經(jīng)沒有相應(yīng)的post文檔了。
操作的明細(xì)信息
關(guān)于mongodb的明細(xì)操作在[中文版] MongoDB權(quán)威指南 中都已經(jīng)有了非常詳細(xì)的說明,有需要的,可以到地址:
http://code.google.com/p/mycloub/downloads/list
進(jìn)行下載并且深入研究。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
