標籤:date 結構 com direct parent numbers directory 通過 讀寫權限
1.概念篇
MongoDB和MySQL分別作為非關係型資料庫和關係型資料庫的代表,通過它們之間的對比可以很快的建立起對MongoDB的認知。
MongoDB |
MySQL |
資料庫(Database) |
資料庫(Database) |
集合(Collection) |
表(Table) |
文檔(Document) |
記錄(record) |
對於關係型資料庫,一般來說,我們可以簡單的理解為:一個資料庫管理應用,可以建立多個資料庫(databases),每個資料庫可以管理很多個表(tables),表中儲存的就是可以CURD的記錄(records),這種管理層級同樣可以映射到MongoDB上。
與MySQL不同的是,MongoDB的資料具有靈活的模式 。集合本身沒有對文檔結構的規則性校正,而表的設計從一開始就約束死了記錄該包含的欄位名。
需要注意的是,MongoDB作為非關係型資料庫,不是說其我們使用時不能設計成關係型的結構,我們同樣可以人為地約束(document)文檔結構包含的資料的類型,(與MySQl不同的是,MongoDB的文檔支援數組和對象、子文檔等複雜的資料結構)同樣文檔之間也可以設計成類似ER圖的關聯式模式。
下面是官網提供的一個書籍分類樹形結構資料建模的例子
?
傳統的關係型資料庫的設計思想是把每個節點當做一個記錄,每個節點儲存其父節點的_id.
_id |
parent |
MongoDB |
Databases |
dbm |
Databases |
Databases |
Programming |
Languages |
Programming |
Programming |
Books |
Books |
null |
這種關係也可以使用MongoDB儲存
db.categories.insert( { _id: "MongoDB", parent: "Databases" } )db.categories.insert( { _id: "dbm", parent: "Databases" } )db.categories.insert( { _id: "Databases", parent: "Programming" } )db.categories.insert( { _id: "Languages", parent: "Programming" } )db.categories.insert( { _id: "Programming", parent: "Books" } )db.categories.insert( { _id: "Books", parent: null } )
其他幾種樹形結構的建模方法請參考
Model Tree Structures
Modeling a Tree in a Document Database
2.快速控制項目篇
- 下載安裝用戶端https://docs.mongodb.com/manual/administration/install-community/
開啟MongoDB服務
(1)建立資料庫儲存目錄
mkdir -p ~/yourdir/db
確保目前使用者擁有該目錄的讀寫權限
(2)開啟服務
mongod --dbpath <path to data directory>
再此之前確保mongod命令路徑已經加入到了系統內容變數
使用mongo shell 操作資料庫
(1)串連到資料庫,開啟命令模式
mongo --host 127.0.0.1:27017
如果使用預設參數,後面的參數可以省略
(2)顯示目前操作的資料庫
db
(3)切換資料庫
use <database>
當第一次儲存資料到資料庫時,MongoDB會自動建立資料庫及集合
use myNewDatabasedb.myCollection.insertOne( { x: 1 } );
上面的insertOne
語句會自動建立myNewDatabase
資料庫,與myCollection
集合。
3.MongoDB 增刪改查 操作
db.collection.insertOne()db.collection.insertMany()
db.collection.deleteOne()db.collection.deleteMany()
db.collection.updateOne()db.collection.updateMany()db.collection.replaceOne()
db.collection.find()
MongoDB超級簡明入門教程