MongoDB 快速入門

前言

最近咱們項目引入MongoDB,做爲頭像審覈存儲處理,畢業快兩年,第一次使用MongoDB,所以作一下MongoDB入門筆記。html

MongoDB

最近看到咱們項目有用到MongoDB 是一個基於分佈式文件存儲的數據庫。由 C++語言編寫,它是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。java

MongoDB 概念解析

SQL術語/概念 MongoDB術語/概念 解釋/說明
database database 數據庫
table collection 數據庫表/集合
row document 數據記錄行/文檔
column field 數據字段/域
index index 索引
table joins 錶鏈接,MongoDB不支持
primary key primary key 主鍵,MongoDb自動將_id字段設置爲主鍵

安裝MongoDB

MongoDB 提供了 linux 各發行版本 64 位的安裝包,你能夠在官網下載安裝包。 下載地址:www.mongodb.com/download-ce…linux

下載完安裝包,並解壓 tgzsql

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz    # 下載
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz                                   # 解壓
mv  mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb                         # 將解壓包拷貝到指定目錄
export PATH=<mongodb-install-directory>/bin:$PATH #MongoDB 的可執行文件位於 bin 目錄下,因此能夠將其添加到 PATH 路徑中:
複製代碼

建立數據庫目錄mongodb

MongoDB的數據存儲在data目錄的db目錄下,可是這個目錄在安裝過程不會自動建立,因此你須要手動建立data目錄,並在data目錄中建立db目錄。。 注意:/data/db 是 MongoDB 默認的啓動的數據庫路徑(--dbpath)shell

mkdir -p /data/db
複製代碼

啓動MongoDb服務器數據庫

輸入命令,回車服務器

cd /usr/local/mongodb/bin/
mongod --dbpath /data/db
複製代碼

MongoDb服務啓動成功,如圖 curl

啓動MongoDb服務器後,咱們啓動一個終端鏈接到 MongoDb 服務器。(xshell從新打開一個窗口) 鏈接MongoDb服務器命令的語法以下分佈式

mongo server_ip:port/dbname -u user -p password
複製代碼

由於這裏我鏈接的是本地服務器,直接輸入mongo,便可進行shell後臺,可進行數據庫的CURD操做。

MongoDb的crud

1.MongoDb建立數據庫

MongoDB 建立數據庫的語法格式以下:

use database_name
複製代碼

若是數據庫不存在,則建立數據庫,不然切換到指定數據庫。

如圖建立了huaxiao的數據庫,可是在使用show dbs命令時,並無看到數據庫存在,這是由於該數據庫中尚未數據。要顯示它,咱們須要向數據庫插入一些數據。

2.刪除數據庫

MongoDB 刪除數據庫的語法格式以下:

db.dropDatabase()
複製代碼

接下來咱們切換到數據庫 huaxiao,執行刪除操做:

> use huaxiao
switched to db huaxiao
> show dbs
huaxiao  0.078GB
local    0.078GB
> db.dropDatabase()
{ "dropped" : "huaxiao", "ok" : 1 }
> show dbs
local  0.078GB
> 
複製代碼

3.MongoDb建立表(集合)

MongoDB 中使用 createCollection() 方法來建立集合。

db.createCollection(name, options)
複製代碼

參數說明:

  • name: 要建立的集合名稱
  • options: 可選參數, 指定有關內存大小及索引的選項

下圖建立了一個數據庫huaxiao,建立了禮物集合gift

4.刪除表(集合)

集合刪除語法格式以下:

db.collection.drop()
複製代碼

如下實例刪除了集合 gift:

> show tables;
gift
system.indexes
> db.gift.drop()
true
> show tables;
system.indexes
> 
複製代碼

5.MongoDB 插入文檔

MongoDB 使用 insert() 或 save() 方法向集合中插入文檔,語法以下:

db.collection.insert(document)
複製代碼

如下文檔能夠存儲在 MongoDB 數據庫 的 gift 集合中:

6.MongoDB 查詢文檔

MongoDB 查詢數據的語法格式以下:

db.collection.find(query, projection)
複製代碼

參數說明:

  • query :可選,使用查詢操做符指定查詢條件
  • projection :可選,使用投影操做符指定返回的鍵。查詢時返回文檔中全部鍵值, 只需省略該參數便可(默認省略)。

若是你須要以易讀的方式來讀取數據,可使用 pretty() 方法,語法格式以下:

db.collection.find(query, projection).pretty()
複製代碼

如下實例咱們查詢了集合 col 中的數據:

db.gift.find().pretty();
{
	"_id" : ObjectId("5d1951a6659f4eaa30bac84f"),
	"id" : "1",
	"name" : "守護之心",
	"price" : "10"
}
複製代碼

7.MongoDB 刪除文檔

remove() 方法的基本語法格式以下所示:

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)
複製代碼

參數說明:

  • query :(可選)刪除的文檔的條件。
  • justOne : (可選)若是設爲 true 或 1,則只刪除一個文檔,若是不設置該參數,或使用默認值 false,則刪除全部匹配條件的文檔。
  • writeConcern :(可選)拋出異常的級別。

咱們移除 name 爲 '守護之心' 的文檔:

> db.gift.remove({'name':'守護之心'})
WriteResult({ "nRemoved" : 1 })
複製代碼

若是你只想刪除第一條找到的記錄能夠設置 justOne 爲 1,以下所示:

db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
複製代碼

8.MongoDB 更新文檔

update() 方法用於更新已存在的文檔。語法格式以下:

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
複製代碼

參數說明:

  • query : update的查詢條件,相似sql update查詢內where後面的。
  • update : update的對象和一些更新的操做符(如,inc...)等,也能夠理解爲sql update查詢內set後面的
  • upsert : 可選,這個參數的意思是,若是不存在update的記錄,是否插入objNew,true爲插入,默認是false,不插入。
  • multi : 可選,mongodb 默認是false,只更新找到的第一條記錄,若是這個參數爲true,就把按條件查出來多條記錄所有更新。 writeConcern :可選,拋出異常的級別。

咱們在集合 gift 中插入以下數據:

>db.gift.insert({
	"id" : "1",
	"name" : "守護之心",
	"price" : "10"
})
複製代碼

接着咱們經過 update() 方法來更新禮物價格(price),並查看,更新成功:

> db.gift.update({'id':'1'},{$set:{'price':'888'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.gift.find().pretty()
{
	"_id" : ObjectId("5d1a9e46b35668bf92c989e3"),
	"id" : "1",
	"name" : "守護之心",
	"price" : "888"
}
> 
複製代碼

參考資料

相關文章
相關標籤/搜索