MongoDB資料庫基本操作

來源:互聯網
上載者:User

標籤:比較   大量   mongodb使用   lamp架構   增刪改   多表查詢   業務   伺服器   地理   

為了儲存網站的使用者資料和業務資料,通常需要一個資料庫。MongoDB和Node.js特別般配,因為Mongodb是基於文檔的非關係型資料庫,文檔是按BSON(JSON的輕量化二進位格式)儲存的,增刪改查等管理資料庫的命令和JavaScript文法很像。本文將詳細介紹MongoDB資料庫

資料庫

資料庫,顧名思義,是資料存放區的倉庫,主要功能有兩個

1、有組織地存放資料

與在磁碟上自己存放檔案不同,資料庫替使用者組織了資料的儲存形式,使用者只需要按照資料庫提供的介面將資料寫入,資料便會按照標準的格式被儲存起來

2、按照不同的需求進行查詢

資料庫不僅要能寫入資料,還支援資料查詢,並且能夠按照不同的需求進行查詢。因為儲存是有組織的,因此查詢上可以更正常化,查詢速度也會快很多

不同的資料庫的區別就是存放資料的組織不同,同時提供了不同種類的查詢。使用者可以按照自己的需求,選擇合適的資料庫

【分類】

資料庫的分類有很多種,按照對SQL語言的支援,可以分為以下兩種:

1、SQL資料庫,比如Oracle、Mysql等

2、NoSQL資料庫,比如Redis、MongoDB等

隨著在規模互連網應用的出現,傳統的SQL資料庫遇到了一些設計上的弊端。比如,SQL對錶的定義使應用不夠靈活,橫向擴充比較困難。與一些特性難以滿足相比,反而是SQL資料庫的很多特性沒有用武之地。比如,在很多情境下,及時存取並不是必要的,也沒有特別多的事務需求,而這些額外的特性消耗著SQL資料庫的效能

因此NoSQL資料庫應運而生,NoSQL全稱是Not Only SQL,意即"不僅僅是SQL"。但事實上,絕大多數NoSQL資料庫都放棄了對SQL語言的支援。與SQL關係型資料庫相比,NoSQL非關係型資料庫大多放棄了一些特性。比如,放棄了即時一致性、對事務的完整支援以及多表查詢等。聽起來缺點很多,但收益也明顯,NoSQL資料庫簡單便捷、方便擴充,並且有更好的效能

概述

MongoDB是一個開源的NoSQL資料庫,在國內被稱為芒果資料庫。Linux、Apache、MySQL和PHP組成了非常有名的LAMP架構。現在,有人提議將LAMP中的代表M的MySQL替換為MongoDB

NoSQL資料庫有很多,為什麼要選擇MongoDB呢?

MongoDB 是一個基於分布式檔案儲存體的資料庫。由 C++ 語言編寫,旨在為 WEB 應用提供可擴充的高效能資料儲存解決方案。MongoDB使用集合(collection)和文檔(document)來描述和儲存資料,集合(collection)就相當於表,文檔(document)相當於行,欄位相當於列,不像MySQL之類的關係型資料庫,表結構是固定的,比如某一行由若干列組成,行行都一樣,而MongoDB不同,一個集合裡的多個文檔可以有不同的結構,更靈活一些

MongoDB有自己很鮮明的特色,總結起來有以下4條

1、沒有表結構的限制

傳統SQL資料庫中,對每張表都需要定義表結構。如果有新的儲存需求,往往需要添加新的欄位,更改表結構。在一些情境下,會顯得很不方便,而對於MongoDB,這不再是問題。因為它沒有表結構這個概念,在使用一張表之前,不需要對這張表進行任何初始化操作。MongoDB的這種特性對快捷開發和多變的業務需求是很合適的

2、完全的索引支援

有些NoSQL資料庫,比如redis,它是記憶體資料庫,速度很快。但是,做為索引值資料庫,只支援一種按鍵查詢的方式。靈活性、使用範圍和易用性都受到影響;再比如hbase,寫入速度很快。但是,同樣查詢受限,它只支援單索引,二級索引需要自己實現

而MongoDB支援單鍵索引、多鍵索引、全文索引和地理位置索引。所以MongoDB是功能非常完善的NoSQL資料庫,也被稱為最接近關聯式資料庫的非關聯式資料庫

3、良好的資料安全性和方便的規模擴充

MongoDB使用複製集做多副本儲存,以保證資料的安全性。同時,MongoDB內建的分區技術可以很方便地進行資料規模的擴充。分區技術是很新穎的一個特性,它包含了自動資料介面,動態擴容和縮容等一系列在其他資料庫中需要大量人工操作的工作,同時提供了對資料庫的統一訪問入口,不需要在應用程式層再進行分發,顯著減少了人工成本

4、完善的文檔支援和驅動支援

 

安裝

首先,在官網的下載頁面選擇合適的MongoDB版本進行下載

然後,一步一步進行安裝即可

預設情況下,安裝到C盤的Program Files檔案夾下的MongoDB檔案夾中

伺服器配置

【搭建伺服器】

搭建伺服器,需要進行以下幾個步驟

1、建立data檔案夾儲存資料庫的資料檔案;建立log檔案夾儲存資料庫的記錄檔;建立bin檔案夾儲存資料庫的可執行檔;建立conf檔案夾來儲存資料庫的設定檔

2、在windows系統下需要設定環境變數,否則在命令列中會提示mongod命令不可用

在環境變數的path中,添加mongod.exe檔案的目錄

3、接下來,有兩種方式啟動mongoDB服務,一種如下所示,設定dppath參數值為自訂的目錄路徑

mongod --dbpath=D:/app/mongo/data

由看出,mongodb的預設連接埠是27017

4、另一種是在conf檔案夾下建立mongod.conf檔案,在這個檔案中將設定mongodb啟動的配置參數

dbpath = dat\nlogpath = log/mongod.log

mongod -f conf/mongod.conf

這種方法在命令列工具中沒有任何提示,因為記錄已經儲存到記錄檔中,此時mongodb服務已經正常開啟

【串連伺服器】

在搭建好mongodb伺服器之後,需要使用用戶端mongo進行串連,才能進行下一步的操作

因為是使用mongo串連mongodb伺服器,所以需要保證啟動mongodb伺服器的命令列工具不被關閉,新開一個命令列工具,並輸入mongo 127.0.0.1/test,test為資料庫的名稱

首先切換到admin資料庫(use admin),然後使用db.shutdownServer命令來關閉服務

資料庫操作

【預設】

MongoDB 中預設的資料庫為 test,如果沒有建立新的資料庫,集合將存放在 test 資料庫中

【查看】

使用show dbs來查看資料庫

show dbs

【建立/切換】

使用use命令來切換/建立資料庫,會發現建立的資料庫並不在資料庫的列表中, 要顯示它,需要向資料庫插入一些資料

use db_name

【顯示當前資料庫】

使用db命令來顯示當前資料庫

db

【將資料寫入集合中】

使用db.集合名.insert(文檔)來將文檔的資料寫入集合中,文檔的格式為JSON。而所有儲存在集合中的資料都是BSON格式。BSON是一種類json的一種二進位形式的儲存格式,簡稱Binary JSON。

db.collection_name.insert

【查看集合】

上面的插入操作,會自動建立集合db1_coll1,使用show collections命令可以查看當前資料庫中的所有集合

【刪除資料庫】

這將刪除當前所選資料庫。 如果沒有選擇任何資料庫,那麼它將刪除預設的’test‘資料庫

db.dropDatabase

集合操作

集合類似於SQL資料庫中的資料表,標識為collection

可以使用命令show collections檢查建立的集合

[注意]也可以使用show tables來查看集合

【建立集合】

在插入文檔時,MongoDB首先檢查上限集合capped欄位的大小,然後檢查max欄位

db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean>, size: <number>, max <number>} )

name:集合的名字

capped:是否啟用集合限制,如果開啟需要制定一個限制條件,預設為不啟用,這個參數沒有實際意義

max:集合中最大條數限制,預設為沒有限制

size:限制集合使用空間的大小,預設為沒有限制,size的優先順序比max要高

autoIndexId:是否使用_id作為索引,預設為使用(true或false)

[注意]向集合中插入文檔時,如果集合不存在 ,則會自動建立集合

【刪除集合】

MongoDB 的 db.collection_name.drop用於從資料庫中刪除集合。如果選定的集合成功刪除,drop方法將返回true,否則返回false

MongoDB資料庫基本操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.