Mongo數據庫學習

第二章. MongoDB基礎知識

1 文檔

文檔至關於關係型數據庫中的row。javascript

文檔中的鍵值對是有序的。java

2 集合

一個集合就至關於一個表。正則表達式

2.1 動態模式

假設集合裏面一個名爲"type"的字段用於指明文檔是水果仍是蔬菜,那麼應該將這兩種不一樣類型的文檔拆分紅兩個集合shell

2.2 子集合(有疑問)

使用「.」分割不一樣命名空間的子集合。在MongoDB中,使用子集合來組織數據很是高效,值得推薦。數據庫

3 數據庫

多個文檔組成集合,多個集合組成數據庫。數組

數據庫名應所有小寫。函數

數據庫最終會變成文件系統中的文件,因此數據庫名有不少限制。code

自帶保留數據庫:對象

  • admin

    對應「root」數據庫,添加一個用戶後,自動獲取全部數據庫權限。blog

  • local

    永不可複製

  • config

    存儲分片信息

4 啓動

默認啓動C:\data\db目錄,不存在會報錯。

5 MongoDB shell

shell是一個功能完備的JavaScript解釋器,可運行JavaScript程序。

Mongo可以使用JavaScript標準庫,定義和調用JavaScript函數。

db.help()查看數據庫級別的幫助,db.foo.help()查看集合級別的幫助。

5.1 建立

> db.blog.insert({"name":"Rohan","date":new Date()})

5.2 讀取

  • find()

    shell會自動顯示最多20個匹配的文檔

  • findOne()

5.3 更新

update至少接受兩個參數

6. 數據類型

Mongo在JSON包含的六種數據類型:null、布爾、數字、字符串、數組和對象。的基礎上新增了其餘類型:

  • null
  • 布爾型
  • 數值型

    默認64位浮點型數值,整型eg:{"x" : NumberInt("3")}

  • 字符串
  • 日期

    {"x" : new Date()}

  • 正則表達式

    {"x" : /foobar/i}

  • 數組

    能夠包含不一樣數據類型的元素

  • 內嵌文檔
  • 對象id

    {"x" : ObjectId()}

  • 二進制數據
  • 代碼

    能夠包含任意JavaScript代碼

第三章. CRUD

3.1 插入

db.foo.insert({"bar" : "baz"})

  • 批量插入batchInsert

    接收的參數是一個數組裏面嵌套字典,此時會生成多個document,eg:

    db.foo.batchInsert([{"name" : "Rohan"},{"sex": "None"}])

    批量插入的最大消息爲48MB,超過期,多數驅動程序會將這個請求拆分爲多個48MB的請求。

    批量插入時,某個文檔失敗時,以前插入的OK,後續的沒法進行,若是指望忽略錯誤,可使用continueOnError選項。

  • 校驗

    全部的文檔必須小於16MB,Object.bsonsize(doc)查看文檔大小

3.2 刪除

db.foo.remove({"可選":"鍵值對"})

永久刪除,不能撤銷,不能恢復。

  • 清空集合(表)

    db.foo.drop()速度更快

3.3 更新

db.foo.update({"定位器":"value"},{新的集合})

此操做屬於將新的文檔徹底替換掉了目標文檔,甚至包括_id,固然_id不能重複否則失敗。千萬當心使用!!!

3.3.1 修改器

  1. $set修改器

    指定定位器文檔的一個字段的值,若是這個字段不存在,則建立;存在則更新:

    do.foo.update({"user":"Rohan"},{"$set":{"最喜歡的語言":"Python"}})

    注意此處$set後面跟着一個字典,是一個嵌套文檔。

    $set能夠修改值的類型,從字符串變爲list。

    $set能夠修改嵌套文檔,eg:

    do.foo.update({"user":"Rohan"},{"$set":{"address.company":"山東"}})

    $unset能夠將這個鍵徹底刪除,eg:

    do.foo.update({"user":"Rohan"},{"$unset":{"最喜歡的語言":1}})

  2. $inc數值修改器

    一樣字段不存在,則建立;存在則在原有基礎上增長,只能是數字,eg:

    do.foo.update({"user":"Rohan"},{"$inc":{"Age":25}})

相關文章
相關標籤/搜索