1.什么是[NoSQL]數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù):進(jìn)行高效的山析、有規(guī)則的進(jìn)行數(shù)據(jù)持久化存儲(chǔ)的軟件
NoSQL數(shù)據(jù)庫(kù):Not only sql笋轨,指代非關(guān)系型數(shù)據(jù)庫(kù)
優(yōu)點(diǎn):高可擴(kuò)展性、分布式計(jì)算钾挟、低成本掺出、靈活架構(gòu)、半結(jié)構(gòu)化數(shù)據(jù)闲礼、簡(jiǎn)化關(guān)聯(lián)關(guān)系
缺點(diǎn):沒(méi)有標(biāo)準(zhǔn)化慎菲、有限查詢露该、不直觀
2.常見(jiàn)[NoSQL]數(shù)據(jù)庫(kù) BSON==ison
列存儲(chǔ):Hbase、Cassandra、Hypertable
文檔存儲(chǔ):MongoDB台汇、CouchDB
k-v存儲(chǔ):TokyoCabinet苟呐、BerkeleyDB、MemcacheDB笆呆、redis
對(duì)象存儲(chǔ):Neo4J赠幕、Versant
Xml數(shù)據(jù)庫(kù):BerkeleyDB、BaseX
3.MongoDB概述
MongDB是一個(gè)基于分布式文件存儲(chǔ)的NoSQL數(shù)據(jù)庫(kù)
C++編寫的運(yùn)行穩(wěn)定性能高的數(shù)據(jù)庫(kù)
模式自由
面向集合
完整索引支持
復(fù)制和高可用性
more …
4.Mongodb下載安裝
官方網(wǎng)站:https://www.mongodb.com/
下載【偶數(shù)為穩(wěn)定版逆屡,如1.6魏蔗,奇數(shù)為開(kāi)發(fā)版沫勿,如1.7】
windows安裝mongoDB
ubuntu安裝mongoDB
5.Mongodb術(shù)語(yǔ)解釋
database--database:數(shù)據(jù)庫(kù)
table – collection:數(shù)據(jù)庫(kù)表 – 集合
row – document: 數(shù)據(jù)記錄 – 文檔
column – field:數(shù)據(jù)字段 – 域
index – index :索引 – 索引
table-join – None:表連接~
primary key – primary key :主鍵
6.Mongodb基本操作
mongoDB將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔
數(shù)據(jù)由 key=value 的鍵值對(duì)的形式組成
數(shù)據(jù)的操作:增刪改查
nosql三元素:數(shù)據(jù)庫(kù) – 集合 – 文檔 [--域]
7.MongoDB基本語(yǔ)法——數(shù)據(jù)庫(kù)操作
db:查看當(dāng)前指向的數(shù)據(jù)庫(kù)
db.getName()
db.getHelp()查看db變量的所有辦法
show dbs:查看當(dāng)前所有的數(shù)據(jù)庫(kù)
use <數(shù)據(jù)庫(kù)名稱>:指向一個(gè)數(shù)據(jù)庫(kù)
Use數(shù)據(jù)庫(kù)不會(huì)創(chuàng)建數(shù)據(jù)庫(kù),如果操作數(shù)據(jù)會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)
db.dropDatabase():刪除當(dāng)前指向的數(shù)據(jù)庫(kù)
8.MongoDB基本語(yǔ)法——集合操作
show collections:查看當(dāng)前數(shù)據(jù)庫(kù)所有集合 db.createCollection([, options]):創(chuàng)建一個(gè)集合
db.<集合名稱>.drop():刪除指定的集合
9.MongoDB基本語(yǔ)法——數(shù)據(jù)類型
ObjectID:文檔id
String:字符串
Boolean:布爾值
Integer:整數(shù)
Double:浮點(diǎn)數(shù)
Arrays:數(shù)組或者列表
Object:嵌入的文檔
Null:空值
Timestamp:時(shí)間戳
Date:日期時(shí)間
10.MongoDB基礎(chǔ)語(yǔ)法——增加數(shù)據(jù)
語(yǔ)法:db.<集合名稱>.insert(文檔)
集合可以是原來(lái)存在的馆衔,可以是不存在的
文檔:就是BSON (JSON)格式【python中的dict】表示的數(shù)據(jù)(dict)
簡(jiǎn)單查詢:db.<集合名稱>.find() 查詢指定集合的數(shù)據(jù)
db.<集合名稱>.find().pretty()改變數(shù)據(jù)列出方式
11.MongoDB基礎(chǔ)語(yǔ)法——更新數(shù)據(jù)
語(yǔ)法:db.<集合名稱>.update(,,[multi:])
update默認(rèn)會(huì)修改全部;加$set會(huì)把添加內(nèi)容追加到數(shù)據(jù)后。
db.user.updateOne({name:"haha"},{$set:{age:28,name:"hehe"}})
指定屬性更新:$opration
multi:默認(rèn)false更新符合條件第一條驮吱,設(shè)置true全集合更新
12.MongoDB基礎(chǔ)語(yǔ)法——保存數(shù)據(jù)
語(yǔ)法:db.<集合名稱>.save(文檔)
特征:[_id]如果數(shù)據(jù)不存在~添加拇砰,如果數(shù)據(jù)存在~修改
13.MongoDB基礎(chǔ)語(yǔ)法——?jiǎng)h除數(shù)據(jù)
語(yǔ)法:db.<集合名稱>.remove(, {justOne:})
參數(shù)query:刪除文檔的條件
參數(shù)justOne:設(shè)置為true或者1癌别,刪除一條躁垛;默認(rèn)false刪除多條
14.MongoDB基礎(chǔ)語(yǔ)法——查詢數(shù)據(jù)
基本查詢
find([{文檔條件}]):全集合查詢
findOne([{文檔條件}]):查詢第一個(gè)
pretty():將查詢結(jié)果格式化展示
14.1比較運(yùn)算符(關(guān)系運(yùn)算符)
默認(rèn)判斷土铺,無(wú)運(yùn)算符
$lt:little~小于 <? less than
$lte:little or equals~小于等于 <=
$gt:granter~大于 >
$gte:granter or equals~大于等于 >=
例:
14.2邏輯運(yùn)算符
邏輯與:并且運(yùn)算,默認(rèn)操作部宿,無(wú)運(yùn)算符
邏輯或:或者運(yùn)算理张,$or
14.3范圍運(yùn)算符
$in:判斷指定條件是否包含在某個(gè)范圍內(nèi)
$nin:判斷指定條件是否不包含在某個(gè)范圍內(nèi)
14.4正則條件
/reg/:普通正則表達(dá)式
$regex:指定正則表達(dá)式
14.5自定義條件
$where:通過(guò)函數(shù)自定義條件[JS函數(shù)]
指定函數(shù)中,返回boolean類型的值
this表示每個(gè)要查詢的文檔
14.6數(shù)據(jù)查詢——限制查詢條數(shù)
.limit(count)
14.7數(shù)據(jù)查詢——跳過(guò)記錄行數(shù)
.skip(num)
14.8數(shù)據(jù)查詢——投影:查詢指定的域
find({}, {投影字段:1/0})
14.9數(shù)據(jù)查詢——排序
.sort({字段:1/-1, ...})
14.10數(shù)據(jù)查詢——統(tǒng)計(jì)
<find>.count().
<find({條件})>count()
db.<集合名稱>.count({條件})
14.11數(shù)據(jù)查詢——去重
db.<集合名稱>.distinct(“去重域名稱”, {條件})