MongoDB是一個跨平臺的,面向文檔的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
什么是NoSql?
NoSql
,全稱是Not Only Sql
,指的是非關系型的數據庫。下一代數據庫主要解決幾個要點:非關系型的、分布式的、開源的、水平可擴展的。原始的目的是為了大規模web應用,這場運動開始于2009年初,通常特性應用如:模式自由、支持簡易復制、簡單的API、最終的一致性(非ACID)、大容量數據等。NoSQL被我們用得最多的當數key-value
存儲,當然還有其他的文檔型的、列存儲、圖型數據庫、xml數據庫等。
為什么要使用MongoDB?
JSON風格文件的形式,面向文檔存儲:數據存儲
- 對任何屬性可索引
- 復制和高可用性
- 自動分片
- 豐富的查詢
- 快速就地更新
MongoDB的特點
它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:
- 面向集合存儲,易存儲對象類型的數據。
- 模式自由。
- 支持動態查詢。
- 支持完全索引,包含內部對象。
- 支持查詢。
- 支持復制和故障恢復。
- 使用高效的二進制數據存儲,包括大型對象(如視頻等)。
- 自動處理碎片,以支持云計算層次的擴展性。
- 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
- 文件存儲格式為BSON(一種JSON的擴展)。
- 可通過網絡訪問。
何處能使用MongoDB?
- 大數據
- 內容管理和交付
- 移動和社交基礎設施
- 用戶數據管理
- 數據平臺
MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。
基本的用法是存儲JSON數據,這很適合JavaScript程序。其特性如下:
- 沒有表結構的概念,每條記錄可以有完全不同的結構
- 業務開發方便快捷
- sql數據庫需要事先定義表結構再使用
MAC 系統下載安裝 mongodb
1、MAC MongoDB 下載地址
2、下載MongoDB后,將mongodb-osx-x86_64-3.4.5.tar.ge 解壓得到mongodb這個文件夾 復制到 /usr/local 路徑下。
默認情況下在Finder中是看不到 /usr 這個目錄的(終端用得溜的請略過),可以打開Finder后按shift + command +G 輸入 /usr/local后回車便能看到這個隱藏的目錄了
3、上圖中展示的就是我的本機的目錄結構了,在/usr/local/mongodb/bin下就是mongodb的執行文件了。
4、在根目錄下新建 data 文件夾,data 文件夾里面創建一個db文件夾,里面是用來存放數據庫及其數據。
5、終端切換到/usr/local/mongodb/bin目錄下。
6、執行 ./mongod 啟動服務端。
7、 如上圖,顯示等候客戶端連接的界面就代表啟動成功了,如果不成功檢查下/data/db文件夾的位置是否正確。如果不行,刪除重建。
8、打開瀏覽器,輸入localhost:27017,會出現"It looks like you are trying to access MongoDB over HTTP on the native driver port."。
9、重新打開一個終端 進入 /usr/local/mongodb/bin這個目錄,執行./mongo 命令,即可連接上。
注意:第六步 和 第九步 輸入的執行命令 不相同!
10、如上圖所示 ,終端上會一直顯示一個 ‘>’ 符號,就代表連接成功了,此時就可以輸入mongodb的sql命令:
demo 是創建的一個集合名字
show dbs //顯示數據庫
use demo //使用某個數據庫
db.demo.insert({'name':'demo'}) //插入一條記錄
db.demo.find() //查找所有記錄
db.demo.findone() //查找一條記錄
db.dropDatabase() //刪除數據庫
db.demo.drop //刪除指定集合
show collections //顯示所有集合
db.createColletion('demo') //創建集合
db.demo.save({}) //插入記錄
db.demo.update({'_id',1},{$set:{name:'demo',age:20}})
db.demo.remove({}) //刪除所有集合
for(var i=1;i<=10;i++){db.demo.insert({"name":"king"+i,"age":i})} //循環插入10條記錄
db.demo.find().pretty() //格式化顯示查詢結果
db.demo.find().count() //查詢數據條數
db.demo.find({"age":5}) /查找age是5的條目
db.demo.find({“age”:{$gt:5}}) //查找age大于5的條目
db.demo.find({"age":{$gt:5}}).sort({"age":1}) //查找age大于5的條目且升序排列
db.demo.find({"age":{$gt:5}}).sort({"age”:-1}) //查找age大于5的條目且降序排列
MongoDB 的使用也會有一些限制,例如,它不適合于以下幾個地方。
- 高度事務性的系統:例如,銀行或會計系統。傳統的關系型數據庫目前還是更適用于需要大量原子性復雜事務的應用程序。
- 傳統的商業智能應用:針對特定問題的BI 數據庫會產生高度優化的查詢方式。對于此類應用,數據倉庫可能是更合適的選擇。
- 需要SQL 的問題。