MongoDB學習筆記(1):MongoDB簡介

來源:互聯網
上載者:User

標籤:

 1. MongoDB的特點:

  (1) 便於使用

    MongoDB是一個面向文檔的資料庫,非關係型資料庫。通過在文檔中嵌入式文檔和資料,物件導向的方法能夠僅使用一條記錄來表現複雜的層次關係。文檔的鍵和值不再是固定的類型和大小。

  (2) 易於擴充

    MongoDB的設計採用橫向擴充,即通過分區將資料分散到更多機器上。面向文檔的資料模型使它很容易地在多台伺服器之間進行資料分割。MongoDB能夠自動處理叢集的資料和負載,自動重新分配文檔,以及將使用者請求路由到正確的機器上。

  (3) 豐富的功能

    1) 索引

    MongoDB支援通用二級索引,允許多種快速查詢,且提供唯一索引、複合索引、地理空間索引及全文索引。

    2) 彙總

    MongoDB支援彙總管道,使用者能夠通過簡單的片段建立複雜的彙總,並通過資料庫自動最佳化。

    3) 特殊的集合類型

    MongoDB支援存在時間有限的集合,適用於將在某個時刻到期的資料,如會話(session),也支援固定大小的集合,用於儲存近期資料,如日誌。

    4) 檔案儲存體

    MongoDB支援非常易用的協議,用於儲存大檔案和檔案中繼資料。

  2. MongoDB基礎知識

  (1) 文檔

    文檔是MongoDB的核心概念,文檔就是索引值對的一個有序集。文檔的鍵不能含有\0(Null 字元),且"."和"$"符只能在特定環境下使用,二者是保留的。MongoDB不但區分類型,而且區分大小寫,不能包含重複的鍵,且文檔中的鍵/值對是有序的:{"x":1,"y":2}與{"y":2,"x":1}是不同的。

  (2) 集合

    集合就是一組文檔。文檔可看做關係型資料庫的一行,集合就相當於一張表。

    1) 動態模式

    集合是動態模式的,即{"greeting":"Hello, world!"} {"foo":3}可以存在於同一個集合中.

    2) 命名

    集合中不能是Null 字元串("");集合中不能包含\0字元(Null 字元);集合不能以"syste,."開頭,其為系統集合保留的首碼(如system.users儲存資料庫的使用者資訊,而system.namespaces集合儲存著所有資料庫集合的資訊);使用者建立的集合不能在集合名中包含保留字元"$"。

    子集合是使用"."分隔不同命名空間的子集合,使用子集合來組織資料非常高效。

  (3) 資料庫

    1) 資料庫名需滿足:不能是Null 字元串("");基本上,只能使用ASCII中的字母和數字;資料庫名區分大小寫;資料庫名最多為64位元組

    2) 保留的資料庫名:

    admin:root資料庫,擁有所有資料庫的許可權,一些特定的伺服器端命令也只能從admin資料庫運行(列出所有資料庫或關閉伺服器)

    local:永遠不可複製,且一台伺服器上的所有本地集合都可以儲存在這個資料庫中。

    config:用於分區設定。

  (4) 啟動MongoDB

  運行mongod命令,啟動資料庫伺服器。注意:mongod在沒有參數時會使用預設資料目錄/data/db,因此,在啟動之前,先建立資料目錄/data/db,確保對該目錄有寫入權限。

  啟動時,伺服器會列印版本和系統資訊,預設監聽27017連接埠。mongod還會啟動一個基本的HTTP伺服器,監聽數字為28017,通過http://localhost:28017可以擷取資料庫的管理資訊。

3. windows安裝MongoDB,可參考:windows下安裝MongoDB及使用整理

4. Shell基本操作

  MongoDB內建shell,shell是一個功能完備的JavaScript解譯器,可運行任意JavaScript程式。

#簡單數學運算> x=200    200> x/540# 利用JS標準庫> Math.sin(Math.PI/2)1> new Date("2016/01/20")ISODate("2016-01-19T16:00:00Z")> "Hello,World".replace("World","MongoDB")Hello,MongoDB#定義調用JS函數> function factorial (n){... if(n<=1) return 1;... return n*factorial(n-1);... }> factorial(5)120>

 

  注意:在某行連續三次按下斷行符號鍵可取消未輸入完成的命令。

  (1) 啟動時,shell(MongoDB用戶端)會串連到MongoDB伺服器的test資料庫,並將資料庫連接賦值給全域變數db(該變數是通過shell訪問MongoDB的主要進入點)。

#查看db當前指向那個資料庫> dbtest>#選擇資料庫> use foobarswitched to db foobar> dbfoobar>

  通過db變數,可訪問其中的集合,如db.baz可返回當前資料庫的baz集合。

  (2) 建立

  insert函數可將一個文檔添加到集合中。例:建立一個post局部變數來儲存部落格文章,用於表示我們的文檔,其鍵為"title","content","date"。

# 定義局部變數post> post={"title":"My Blog Post",... "content":"Here‘s my blog post.",... "date":new Date()}{        "title" : "My Blog Post",        "content" : "Here‘s my blog post.",        "date" : ISODate("2016-01-20T13:29:51.882Z")}# 調用insert將其儲存到blog集合中> db.blog.insert(post)WriteResult({ "nInserted" : 1 })#查看儲存的資料> db.blog.find(){ "_id" : ObjectId("569f8c0c0124e675dc0e4f0f"), "title" : "My Blog Post", "content" : "Here‘s my blog post.", "date" : ISODate("2016-01-20T13:29:51.882Z") }>

  (3) 讀取

  find和findOne方法可用於查詢集合裡的文檔,若只想查看一個文檔,可用於findOne。二者可接受一個查詢文檔作為限定條件,使用find時,shell最多顯示20個匹配的文檔。

> db.blog.findOne(){        "_id" : ObjectId("569f8c0c0124e675dc0e4f0f"),        "title" : "My Blog Post",        "content" : "Here‘s my blog post.",        "date" : ISODate("2016-01-20T13:29:51.882Z")}>

  (4) 更新

  update函數用於更新,至少接受兩個參數:限定條件(用於匹配需更新的文檔)和新的文檔。例:為先前寫的文章增加評論功能,需要增加一個新的鍵。

# 修改變數post,增加"comments"鍵> post.comments=[][ ]# 執行更新,用新的post替換標題為"My Blog Post"的文章> db.blog.update({"title":"My Blog Post"},post)WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })# 查看更新結果> db.blog.findOne(){        "_id" : ObjectId("569f8c0c0124e675dc0e4f0f"),        "title" : "My Blog Post",        "Content" : "Here‘s my blog post.",        "date" : ISODate("2016-01-20T13:34:19.849Z"),        "comments" : [ ]}>

  (5) 刪除

  使用remove方法可將問答很從資料庫永久刪除。若未使用任何參數,會將集合內的所有文檔全部刪除。可接受一個作為限定條件的文檔作為參數。

> db.blog.remove({"title":"My Blog Post"})WriteResult({ "nRemoved" : 1 })>

 

windows下mongodb安裝與使用整理

MongoDB學習筆記(1):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.