快速學習-Mongo DB簡介

Mongo DB簡介

Mongo DB 是什麼

  • 由C++編寫,是一個基於分佈式文件存儲的開源數據庫系統
  • 旨在爲WEB應用提供可擴展的高性能數據存儲解決方案
  • 在高負載的情況下,可以添加更多的節點來保證服務器性能\
  • MongoDB 將數據存儲爲一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似於 JSON 對象。字段值可以包含其他文檔,數組及文檔數組

Mongo DB 特性

  • 層級 Database-Collection-Document
  • 靈活的類JSON數據存儲,每條文檔的字段可以完全不同
  • 方便的即席查詢(ad hoc queries)、索引(indexing)和實時聚合(aggregation) • 使用update()命令可以實現替換完成的文檔(數據)或者一些指定的數據字段
  • MongoDB允許在服務端執行腳本

Mongo DB 下載和安裝

  • 可以在mongodb官網下載安裝包,地址爲:
    https://www.mongodb.com/download-center#community
  • 也可以直接用 curl 命令下載,以 64 位 Linux 平臺爲例:
$ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-
3.4.9.tgz 
$ tar -zxvf mongodb-linux-x86_64-3.4.9.tgz
  • 解壓完成之後,將 bin 目錄加入環境變量 PATH 中 • $ ./mongod 啓動 mongo 服務,默認 dbpath 爲 /data/db

Mongo DB 主要概念

在這裏插入圖片描述

Mongo DB 與 MySQL 數據對比

在這裏插入圖片描述

Mongo DB 連接

  • 標準 URI 連接語法:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hos
tN[:portN]]][/[database][?options]]
  • mongodb:// 這是固定的格式,必須要指定。
  • username:password@ 可選項,用戶名/密碼。
  • host1 必須指定至少一個host, host1 是這個URI唯一必須要填寫的,它指定了要連接服務器的地址。如果要連接複製集,需要指定多個主機地址。
  • portN 可選的指定端口,如果不填,默認爲27017。 • /database 如果指定username:password@,連接並驗證登陸指定數據庫。若不指定,默認打開test 數據庫。
  • ?options 連接選項。
  • 示例 $ ./mongo mongodb://admin:123456@localhost/test

數據庫 (database)

• 顯示當前數據庫
> db
• 查看所有數據庫
> show dbs
• 新建數據庫/連接到指定數據庫
> use DATABASE_NAME
• 刪除數據庫
> db.dropDatabase()

集合 (collection)

• 新建集合
> db.createCollection(name, options)
示例:> db.createCollection("mycol", { capped : true, autoIndexId : 
true, size : 6142800, max : 10000 } )
• 刪除集合
> db. COLLECTION_NAME.drop()
• 在 MongoDB 中,通常不需要專門創建集合;當你插入一些文檔
時,MongoDB 會自動創建集合。

文檔 (document)

• 文檔操作 —— 插入文檔(Create,C)
> db.COLLECTION_NAME.insert( document )
這裏的 document 是一個文檔對象,如:
> document=({name: 'iPhone', category: 'cellphone', 
value: 5000 });

文檔操作 —— 刪除文檔(Delete,D)

> db.COLLECTION_NAME.remove(
<query>, 
{ 
justOne: <boolean>, 
writeConcern: <document> 
})
– query :(可選)刪除的文檔的條件。
– justOne : (可選)如果設爲 true1,則只刪除一個文檔。
– writeConcern :(可選)拋出異常的級別。
> db.COLLECTION_NAME.remove({})

文檔操作 —— 更新文檔(Update,U)

> db.COLLECTION_NAME.update( <query>, <update>,{
upsert: <boolean>, 
multi: <boolean>, 
writeConcern: <document> } )
– query : update的查詢條件
– update : update的對象和一些更新的操作符(如 $set,$inc)
– upsert : 可選,這個參數的意思是,如果不存在update的記錄,是否插入;true爲插入,
默認是false,不插入。
– multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數爲true,就
把按條件查出來多條記錄全部更新。
– writeConcern :可選,拋出異常的級別。
• 示例:
> db.col.update({'name':'iPhone'},{$set:{'value': 6000}},{multi:true})
> db.COLLECTION_NAME.save( <document>, { writeConcern: <document> } )

文檔操作 —— 查詢(Retrieve,R)

> db.COLLECTION_NAME.find( query, projection )
-- query :可選,使用查詢操作符指定查詢條件
-- projection :可選,使用投影操作符指定返回的鍵。查詢時返回
文檔中所有鍵值, 只需省略該參數即可(默認省略)
• 示例
> db.COLLECTION_NAME.find( {"name": "iPhone"}, {"name": 1, _id: 0} )

查詢中的 AND 和 OR 條件

• MongoDB 的 find() 方法可以傳入多個鍵(key),每個鍵(key)以逗號隔
開,即常規 SQL 的 AND 條件
> db.COLLECTION_NAME.find({key1:value1, key2:value2})
• MongoDB OR 條件語句使用了關鍵字 $or
> db.COLLECTION_NAME.find( { $or: [ {key1: value1}, 
{key2:value2} ] } )
• 聯合使用示例:
> db.col.find({"value": {$gt:2000}, $or: [{"category": 
"cellphone"},{"name": "iPhone"}]}).pretty()

排序 (sort) 和索引 (index)

排序(sort) • 在 MongoDB 中使用 sort() 方法對數據進行排序,可以通過參數指定排序的字段,並使用 1 和 -1 來指定排序的方式,其中 1 爲升序排列,而 -1 是用於降序

> db.COLLECTION_NAME.find().sort({KEY:1})
索引(index) • MongoDB使用 createIndex() 方法來創建索引
> db. COLLECTION_NAME.createIndex( keys, options )
Key 值爲要創建索引的字段,options 取值 1 按升序創建索引,-1 爲降序
• 索引示例
> db.col.createIndex({"title":1,"description":-1})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章