天天看點

快速學習-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簡介

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 : (可選)如果設為 true 或 1,則隻删除一個文檔。
– 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)

> 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})