這多是史上最簡單的mongoDB數據庫教程了

1 什麼是MongoDB?

MongoDB是一個開源的文檔數據庫和領先的NoSQL(非關係型)數據庫。node

2 MongoDB是怎麼組織、存儲數據的?

一個數據庫能夠包含若干集合,一個集合也就是一張表(就像一個數組),包含了不少文檔(也即數據記錄,就像一個個對象),每一個對象包含了不少字段(對象的鍵值對)。 數據的組織形式能夠簡單粗暴的理解成一個多維的對象數組,層級關係和對應的術語以下: database > collection > document/data records > field(value)mongodb

3 使用方法

從安裝開始

官網下載:www.mongodb.com/download-ce… 下載後將安裝目錄中mongo.exe所在路徑添加到系統環境變量,例如:D:\MongoDB\Server\4.2\bin 打開mongoDB軟件,打開cmd直接輸入mongo便可運行mongo.exe,會顯示當前版本,並鏈接到mongoDB(或者直接在mongo.exe所在文件夾用命令行輸入mongo.exe運行mongoDB)。 此時在命令行能夠直接對mongo進行建立、增刪改查操做,並能夠在mongoDB軟件中刷新後看到。數據庫

增刪改查API

database 級別操做

建立/切換數據庫:use dbName 默認會有一個test數據庫express

查看當前所在所在數據庫:db數組

顯示全部數據庫:show dbs 剛建立的空數據庫是不會顯示的,當插入一條記錄後方可顯示服務器

刪除當前所在數據庫:db.dropDatabase() 若是當前沒有選擇數據庫,則默認刪除test數據庫app

collection 級別操做

建立collection:db.createCollection(name, options)less

顯示全部collection:show collectionsspa

刪除collection:db.COLLECTION_NAME.drop()命令行

過濾某些key:db.COLLECTION_NAME.find({},{KEY:1}) KEY表示要過濾的字段,1表示返回的結果包含這個字段,0表示不包含

document 級別操做

支持的數據類型
  • String Integer Boolean Double Arrays Timestamp Object Null Symbol Date
  • Binary data
  • Regular expression
  • Min/ Max keys - This type is used to compare a value against the lowest and highest BSON elements.
  • Object ID − This datatype is used to store the document’s ID.(_id: ObjectId(4 bytes timestamp, 3 bytes machine id, 2 bytes process id, 3 bytes incrementer))
  • Code − This datatype is used to store JavaScript code into the document.
增刪改查

增長一個document(對象):db.COLLECTION_NAME.insert(document) document能夠是一個對象,也能夠是一個數組(包含多個對象) 還可使用save方法,插入的對象不含_id時,save和insert都會自動添加一個_id;含_id時,save會替換已有的含相同_id的對象

查詢:db.COLLECTION_NAME.find() find內的參數能夠是

  • {key: value} 按值查詢
  • {key: {$lt: value}} 按值的條件查詢
  • $lt - less than 小於 ($gt - 大於)
  • $lte - less than equals 小於等於 ($gte - 大於等於)
  • $ne - not equals 不等於
  • $and: [{}, {}] - 同時知足多個條件
  • $or: [{}, {}] - 只需知足一個條件

更新:db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA) 例如:db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}}) 還可添加第三個參數:,{multi:true}

替換:db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

刪除:db.COLLECTION_NAME.remove(DELLETION_CRITTERIA) 刪除全部:db.mycol.remove({})

指定返回字段Projection:db.COLLECTION_NAME.find({},{KEY:1}) 1表示顯示,0表示不顯示

限制返回結果的數量:db.COLLECTION_NAME.find().limit(NUMBER) NUMBER表示最多返回的數量,不傳返回所有結果

跳過指定結果:.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER) 若是返回結果有N個,那麼跳過第NUMBER個,返回其餘的結果;NUMBER默認爲0

排序:db.COLLECTION_NAME.find().sort({KEY:1}) 根據KEY字段排序,1爲升序,-1爲降序,默認升序

建立索引:db.COLLECTION_NAME.ensureIndex({KEY:1}) 指定索引的字段KEY,以及升序1降序-1;字段能夠有多個

聚合操做:db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION) 用來同時處理多個documents 示例:

// 表示以by_user字段值來分組,每遇到一個相同的值,總數sum增長1
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])

// 返回結果:
{
   "result" : [
      {
         "_id" : "tutorials point",
         "num_tutorial" : 2
      },
      {
         "_id" : "Neo4j",
         "num_tutorial" : 1
      }
   ],
   "ok" : 1}
複製代碼

其餘聚合相關的表達式:

表達式 描述 用法示例
$sum 對指定字段的值求和 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg 對指定字段的值求平均值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min 對指定字段的值求最小值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max 對指定字段的值求最大值 db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])

4 MongoDB是如何工做的

Replication 副本

Replication是mongoDB的一種數據備份策略:

Replication is the process of synchronizing data across multiple servers.

mongoDB將一份數據複製成幾份組成一個副本集,包含一個primary node和多個sedondary node,每一個節點的數據保持一致,客戶應用程序只對primary進行讀寫操做。

Sharding 分片

分片是mongoDB的一種橫向數據存儲拓展策略:

Sharding is the process of storing data records across multiple machines and it is MongoDB's approach to meeting the demands of data growth.

它由如下三部分組成,工做流程是:router(能夠理解爲mongoDB實例)做爲對客戶應用程序開放的接口,將用戶請求均勻分配到不一樣的分片; 一個分片就是一個獨立的副本集,用來存儲數據,一般一個分片集羣對應多個router來分流用戶發來的請求; 配置服務器用來存儲整個數據集羣到每一個分片的映射關係,用來指導router如何將用戶請求導向特定的分片。一個數據集羣包含三個配置服務器。

參考教程:www.tutorialspoint.com/mongodb/mon… MongoDB手冊:mongodb-documentation.readthedocs.io/en/latest/

相關文章
相關標籤/搜索