十分鐘瞭解MongoDB

來源:互聯網
上載者:User

今天寫寫 MongoDB的事情。這貨是一個document-orientied, 基本上使用的json進行互動的。他把那個形式很像json的東西叫做 BJSON. 裡面有一些mongoDB自己定義的資料類型。這種資料形式在傳輸儲存很方便。


首先介紹一下MongoDB的資料結構


database : 這個和mysql中的database一致。 預設使用的local, 可以自己建立新的。例如 在shell中寫 db.xxx 然後就自動建立了xxx 這個collection

collection: 這個概念和mysql中的table保持一致。

document: 這個和mysql裡的row或者 record保持一致。

這個是MongoDB的三個最主要的結構。

下面是如何使用。


下載安裝


首先去 www.mongoDB.org 上下載一個mongoDB的最新版。然後解壓到某個目錄。然後使用命令列進入到該目錄下。

建立 資料存放區檔案夾,這裡可以直接建立一個 /data/db的檔案夾(mkdir -p /data/db)。然後在命令列裡執行如下命令啟動mongodb server.

mongod --dbpath ./data/db
這樣mongoDB就啟動了,一般連接埠為 27017. 你可以使用help來修改Port等。這裡就不過多介紹。

然後重新開一個命令視窗,使用命令進入到該目錄下,執行下面語句啟動mongoDB client.

mongo

如果使用的都是預設連接埠,這裡就可以正常啟動了。如果你修改了mongoDB server的連接埠,這裡需要改成一致的。


資料庫CRUD(Create, Retrieve, Update, Delete)操作


下面就是命令列選擇database, 建立collection, 儲存document。首先:

db查看需要現有的database.show dbs使用ooo作為databaseuse ooo;如果這裡不寫use ooo,那預設就是local.

然後是資料庫的操作了:

1. 插入

var a = {"value":1,"value2":['a','b']}var b = {"value":2}var c = {"str":‘aaa’}插入資料,xxxx是collectiondb.xxxx.save(a);下面也是插入資料db.xxxx.insert(b);db.xxxx.insert(c);



2. 查看資料


擷取全部資料db.xxxx.find()擷取一個資料db.xxxx.findOne()查詢特定的記錄db.xxxx.find({"value":1})



3.更新操作

db.xxxx.update(   { value: { $lt: 18 } },   { $set: { status: "A" } },   { multi: true })這裡 { value: { $lt: 18 } },是說  value < 18,  { $set: { status: "A" } },是說要set status 為A, 如果沒有那個域,則建立出來。{ multi: true } 則是處理多個。




4. 刪除操作


db.xxxx.remove({"value":1})刪除value 為1 的document.

這裡看起來非常簡單。


結束語


MongoDB的強大之處在於 JSON串裡想寫什麼就可以寫什麼。 相同的collection中document可以完全不相同。(但是為了後期的維護,還是盡量相同。)這是稀疏資料庫的一大優勢。

建索引MongoDB有很多種,可以建立unique 索引, TTL 索引(資料會到期失效,預設為此索引), 多列複合式索引,空間索引,全文索引和hash索引。這裡的多列索引和mysql的一致。對於全文索引,mongoDB建議不要在生產環境(線上環境)中使用,因為這個建索引很慢,性價比不高。


對於mongoDB來說,他的索引可以使用{"backgroup":true}來進行後台非同步建立,也可以使用前台索引。但是前台索引會對效能造成極大的影響,所以mongoDB官方文檔建議新起一個mongoDB server的執行個體進行建立。然後使用副本啟動的方法將建立好的索引作為副本啟動。


對於mongoDB,安全性做的比較粗略。也是對於操作,對於database等特殊資料需要分配許可權。因為沒有視圖等概念,這些安全性做的比mysql來說粒度大了一些。但是mongoDB支援SSL 方式訪問,也支援kerberos認證。不過Kerberos認證現在只有微軟那邊在用,之前K3,K4被破,人心惶惶。現在不知道情況如何。


今天就先介紹這麼多吧。


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.