標籤:bre some opd body eve and date 操作 value
大資料時代,mysql等關係型資料庫已經不能滿足資料爆炸的大勢。nosql作為一種非關係型資料存放區模式應運而生,主要應用於分布式資料存放區系統。
【申明:本文中大部分內容來源提煉於菜鳥教程的《NoSQL簡介》,僅做學習筆記參考】
一、NoSQL簡介
NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。是對不同於傳統的關係型資料庫的資料庫管理系統的統稱。採用的是索引值對的方式進行資料存放區。
二、CAP定理
在電腦科學中, CAP定理(CAP theorem), 又被稱作 布魯爾定理(Brewer‘s theorem), 它指出對於一個分散式運算系統來說,不可能同時滿足以下三點:
- 一致性(Consistency) (所有節點在同一時間具有相同的資料)
- 可用性(Availability) (保證每個請求不管成功或者失敗都有響應)
- 分隔容忍(Partition tolerance) (系統中任意資訊的丟失或失敗不會影響系統的繼續運作)
三、MongoDB的安裝與配置
參考:https://jingyan.baidu.com/article/d5c4b52bef7268da560dc5f8.html
添加環境變數至path(value:%mongodb安裝路徑%/bin)。
開啟mongodb的方式,在命令列直接輸入:mongo.exe(若服務未啟動,先執行:net start MongoDB)
四、MongoDB與MySql概念的對比
| SQL術語/概念 |
MongoDB術語/概念 |
解釋/說明 |
| database |
database |
資料庫 |
| table |
collection |
資料庫表/集合 |
| row |
document |
資料記錄行/文檔 |
| column |
field |
資料欄位/域 |
| index |
index |
索引 |
| table joins |
|
表串連,MongoDB不支援 |
| primary key |
primary key |
主鍵,MongoDB自動將_id欄位設定為主鍵 |
五、MongoDB命令列
1、建立資料庫
use databasename;//若databasename存在則被選中,若不存在則被建立。
show dbs;//顯示所有的庫名。新建立的庫名若為插入資料,則不會顯示出來。
db.databasename.insert({"key":"value"});//向databasename中插入一條資料。
2、刪除資料庫/集合
(1)刪除資料庫:先選中要刪除的資料庫名:use databasename; 刪除資料庫:db.dropDatabase();
(2)刪除集合:db.collectionname.drop();
3、向集合中插入資料
db.collectionname.insert({"name":"vike"});
4、更新集合中的資料
db.collectionname.update({"name":"vike"},{$set:{"name":"someone"}})
db.collectionname.save({"name":"vike"},{$set:{"name":"someone"}})
5、刪除集合資料
db.collectionname.remove({"name":"someone"},1) //只刪除合格一條資料 = db.collectionname.deleteOne({"name":"someone"})
db.collectionname.remove({}) //刪除集合內的全部資料 = db.collectionname.deleteMany({})
6、查詢集合資料
db.collectionname.find().pretty() //pretty()可以使資料格式化顯示
查詢條件:
MongoDB 與 RDBMS Where 語句比較
如果你熟悉常規的 SQL 資料,通過下表可以更好的理解 MongoDB 的條件陳述式查詢:
| 操作 |
格式 |
範例 |
RDBMS中的類似語句 |
| 等於 |
{<key>:<value>} |
db.col.find({"by":"菜鳥教程"}).pretty() |
where by = ‘菜鳥教程‘ |
| 小於 |
{<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
| 小於或等於 |
{<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
| 大於 |
{<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
| 大於或等於 |
{<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
| 不等於 |
{<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
MongoDB AND 條件
MongoDB 的 find() 方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開,即常規 SQL 的 AND 條件。
文法格式如下:
>db.col.find({key1:value1, key2:value2}).pretty()
MongoDB OR 條件
MongoDB OR 條件陳述式使用了關鍵字 $or,文法格式如下:
>db.col.find(
{ $or: [ {key1: value1}, {key2:value2} ] }).pretty()
MongoDB $type 操作符
$type操作符是基於BSON類型來檢索集合中匹配的資料類型,並返回結果。
MongoDB 中可以使用的類型如下表所示:
| 類型 |
數字 |
備忘 |
| Double |
1 |
|
| String |
2 |
|
| Object |
3 |
|
| Array |
4 |
|
| Binary data |
5 |
|
| Undefined |
6 |
已廢棄。 |
| Object id |
7 |
|
| Boolean |
8 |
|
| Date |
9 |
|
| Null |
10 |
|
| Regular Expression |
11 |
|
| JavaScript |
13 |
|
| Symbol |
14 |
|
| JavaScript (with scope) |
15 |
|
| 32-bit integer |
16 |
|
| Timestamp |
17 |
|
| 64-bit integer |
18 |
|
| Min key |
255 |
Query with -1. |
| Max key |
127 |
|
MongoDB學習筆記(一)