?nosql 數(shù)據(jù)庫(kù)? 是非關(guān)系型數(shù)據(jù)庫(kù)? (not only sql)(BSON == JSON == dict)
常用的 有 mongodb、redis這2種
什么是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):沒有標(biāo)準(zhǔn)化限匣、有限查詢、不直觀
常見[NoSQL]數(shù)據(jù)庫(kù) BSON==json
????????? 列存儲(chǔ):Hbase毁菱、Cassandra米死、Hypertable
????????? 文檔存儲(chǔ):MongoDB、CouchDB
??????? ? k-v存儲(chǔ):TokyoCabinet贮庞、BerkeleyDB峦筒、Memcache、redis
??????? ? 對(duì)象(圖)存儲(chǔ):Neo4J窗慎、Versant
????????? Xml數(shù)據(jù)庫(kù):BerkeleyDB物喷、BaseX
mongodb:(開源的 可以從官方網(wǎng)站下載 偶數(shù)是穩(wěn)定版 奇數(shù)是開發(fā)板)
1、安裝
? 在window下使用壓縮包安裝 :
? ? ? 1遮斥、解壓文件到某個(gè)盤符(路徑不能包含特殊字符和中文)
????? 2峦失、配置bin到環(huán)境變量中的path
????? 3、在主目錄新建data文件夾术吗、在 data文件夾 下新建 db文件夾 和log文件夾? 在 log文件夾中新建log.log文件
????? 4尉辑、以管理員身份打開cmd
??????????????????????????? 輸入指令 mongodb --dbpath db文件路徑? 配置db
?????????????????????????? 輸入指令mongodb --dbpath db文件夾路徑? --logpath log.log文件路徑? --install ? ? 配置服務(wù) (注冊(cè)成服務(wù)) ? ? ? ??
?????? 5、開啟mongodb服務(wù)使用mongodb數(shù)據(jù)庫(kù)
?? 在linux下安裝:
???????? 1较屿、sudo apt install mongodb 第一種方法
????????? 2隧魄、第二種方法通過壓縮包安裝? tar? -zxvf 壓縮文件名
????????????? 未完 待補(bǔ)充需要配置path
mongodb概述:
????? 是基于分布式文件存儲(chǔ) 的nosql 數(shù)據(jù)庫(kù)? 由c++編寫
優(yōu)點(diǎn): 模式自由?? 面向集合?? 完整索引支持??? 復(fù)制和高可用性
mongodb 術(shù)語(yǔ)解釋
sql?? --------> nosql
DBMS? ---- >DBMS :數(shù)據(jù)庫(kù)管理系統(tǒng)
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? 主鍵
mongodb 基本操作 (mongodb將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔 數(shù)據(jù)由鍵值對(duì)的形式組成? 組成三元素 數(shù)據(jù)庫(kù)--->集合----->文檔(域))
?? 數(shù)據(jù)庫(kù)結(jié)構(gòu)的一些操作:
首先打開cmd 輸入mongo 打開mongodb服務(wù)
mongodb的簡(jiǎn)單使用
show dbs
use dbName
db\db.getName()
db.help()
db.createCollection("name")
db.cname.insert({}); ? ?db.cname([{},{},{}.........])插入多條數(shù)據(jù)
db.dropDatabase();
db.cname.drop()
show dbs? 查看當(dāng)前數(shù)據(jù)庫(kù)
db 查看當(dāng)前在那個(gè)數(shù)據(jù)庫(kù)
use db_py1712 切換到db_py1712數(shù)據(jù)庫(kù)
show collections顯示當(dāng)前數(shù)據(jù)庫(kù)下所有的集合
db.createCollection('stu') ?創(chuàng)建一個(gè)數(shù)據(jù)集合
show dbs
use users
show collections
db.user.find({age:{$lt:30}})
db.user.find().pretty()
db.user.find({age:30}).pretty() ====== db.user.find({age:{$eq:18}}).pretty()
db.user.insert({name:'xiaoming',age:20}) ? 插入一條數(shù)據(jù)
db.user.insert({name:'xiaoming',age:30})
db.user.find({age:{$eq:30},name:'xiaoming'})
db.user.find({$and:[{age:{$eq:30}},{name:{$eq:'xiaoming'}}]})
db.user.find({$or:[{age:18},{name: 'ls'}]})
db.user.find({age:{$in:[18,20]}})
db.user.find({age:{$nin:[18,20]}})
db.user.find().limit(3) ? 分頁(yè)顯示实幕,一頁(yè)顯示3行
db.user.find().limit().count() 統(tǒng)計(jì)所有記錄數(shù)
db.user.find({age:30}).limit().count() ?統(tǒng)計(jì)年齡等于30的記錄數(shù)
更新db.stu.update({title: 'python01'},{$set:{title: 'mongo'}})
db.stu.update({age: {$gt:30}},{$set:{age: 30}})
刪除文檔 db.stu.remove({name: '老王'})
MongoDB AND 條件
MongoDB 的 find() 方法可以傳入多個(gè)鍵(key),每個(gè)鍵(key)以逗號(hào)隔開堤器,即常規(guī) SQL 的 AND 條件。
語(yǔ)法格式如下:
>db.col.find({key1:value1, key2:value2}).pretty()
MongoDB OR 條件
AND 和 OR 聯(lián)合使用
MongoDB?$type?操作符
$type操作符是基于BSON類型來檢索集合中匹配的數(shù)據(jù)類型末贾,并返回結(jié)果
MongoDB Limit() 方法
如果你需要在MongoDB中讀取指定數(shù)量的數(shù)據(jù)記錄闸溃,可以使用MongoDB的Limit方法,limit()方法接受一個(gè)數(shù)字參數(shù)拱撵,該參數(shù)指定從MongoDB中讀取的記錄條數(shù)辉川。
MongoDB Skip() 方法
我們除了可以使用limit()方法來讀取指定數(shù)量的數(shù)據(jù)外,還可以使用skip()方法來跳過指定數(shù)量的數(shù)據(jù)拴测,skip方法同樣接受一個(gè)數(shù)字參數(shù)作為跳過的記錄條數(shù)乓旗。
MongoDB sort()方法
在MongoDB中使用使用sort()方法對(duì)數(shù)據(jù)進(jìn)行排序,sort()方法可以通過參數(shù)指定排序的字段集索,并使用 1 和 -1 來指定排序的方式屿愚,其中 1 為升序排列,而-1是用于降序排列务荆。