一, mangodb與mysql的區別
mangoDB與MYSQL都是開源的數據庫,但是mysql是傳統的關系型數據庫,mangdb則是非關系型數據庫,也可以稱之為文檔型數據庫,是一種NoSQL的數據庫,兩則各自都有各自的優缺點
mysql: 關系型數據庫。
優點: 成熟穩定, 源代碼的可移植性; 支持的操作系統多 為多種編程語言提供API(接口)
缺點: 關系表的不靈活性;存儲引擎混亂;原生json支持的缺乏
mangodb: 非關系型數據庫
優點: 01,不存在sql注入:MySQL的是sql注入是一個很嚴重的缺點,雖然可以使用參數綁定和預處理以及特殊字符轉義來處理。但是MongoDB根本不存在這個問題。xss攻擊是需要防范。
02,不需要提前創建表:在MySQL中如果想要寫入一條數據的話必須要先創建好一張表然后才能寫入數據,比如:要在user表里寫入id=1,username=‘aaa’,sex='女',age=‘20’這條數據,那你就必須在MySQL數據庫上提前建好一張user表,並且至少必須有id,username,sex,age這幾個字段才能寫入成功。但是MongoDB可以直接寫入數據,不需要提前創建表
03,字段數據格式自由:在MySQL中,如果id字段是數字的話你寫一個字符串進去是會報錯的,但是MongoDB不會
04,可以處理json結構:在MongoDB可以存儲一個json對象,比如 字段a的值為{"a":11,"b":12,"c":"abc","d":[1,2,3]},你可以直接去讀取或設置a字段的b值 a.b,讀取a字段d數組的第二個值:a.d.1,可以去刪除a字段的a數據$unset:{"a.a":1},就會變成:{"b":12,"c":"abc","d":[1,2,3]}
05,充分利用了計算機內存,所以查詢和插入效率要遠大於MySQL。我自己測試(400w隨機數據)的時候只有在沒有索引的情況下MongoDB的查詢效率要遠大於MySQL,插入效率和MySQL差不多都是8w條左右1分鍾。在有索引的時候MySQL的查詢要速度要高於MongoDB。
缺點:
Mongodb全局鎖機制。
刪除數據集合后空間不會自動釋放
mysql與 mangodb對比
MySQL |
MongoDB |
|
服務器守護進程 |
mysqld |
mongod |
客戶端工具 |
mysql |
mongo |
邏輯備份工具 |
mysqldump |
mongodump |
邏輯還原工具 |
mysql |
mongorestore |
數據導出工具 |
mysqldump |
mongoexport |
數據導入工具 |
source |
mongoimport |
新建用戶並授權 |
grant all on *.* |
db.addUser("user","psw") |
顯示庫列表 |
show databases; |
show dbs |
進去庫 |
use dbname; |
use dbname |
顯示表列表 |
show tables; |
show collections |
查詢主從狀態 |
show slave status; |
rs.status |
創建庫 |
create database name; |
無需單獨創建,直接use進去 |
創建表 |
create table tname(id int); |
無需單獨創建,直接插入數據 |
刪除表 |
drop table tname; |
db.tname.drop() |
刪除庫 |
drop database dbname; |
首先進去該庫,db.dropDatabase() |
|
|
|
插入記錄 |
insert into tname(id) value(2); |
db.tname.insert({id:2}) |
刪除記錄 |
delete from tname where id=2; |
db.tname.remove({id:2}) |
修改/更新記錄 |
update tname set id=3 |
db.tname.update({id:2}, |
|
|
|
查詢所有記錄 |
select * from tname; |
db.tname.find() |
查詢所有列 |
select id from tname; |
db.tname.find({},{id:1}) |
條件查詢 |
select * from tname where id=2; |
db.tname.find({id:2}) |
條件查詢 |
select * from tname where id < 2; |
db.tname.find({id:{$lt:2}}) |
條件查詢 |
select * from tname where id >=2; |
db.tname.find({id:{$gte:2}}) |
條件查詢 |
select * from tname where id=2 |
db.tname.find({id:2, |
條件查詢 |
select * from tname where id=2 |
db.tname.find($or:[{id:2}, |
條件查詢 |
select * from tname limit 1; |
db.tname.findOne() |
|
|
|
模糊查詢 |
select * from tname where name |
db.tname.find({name:/ste/}) |
模糊查詢 |
select * from tname where name |
db.tname.find({name:/^ste/}) |
|
|
|
獲取表記錄數 |
select count(id) from tname; |
db.tname.count() |
獲取有條件 |
select count(id) from tname |
db.tname.find({id:2}).count() |
查詢時去掉 |
select distinct(last_name) |
db.tname.distinct('last_name') |
|
|
|
正排序查詢 |
select *from tname order by id; |
db.tname.find().sort({id:1}) |
逆排序查詢 |
select *from tname |
db.tname.find().sort({id:-1}) |
|
|
|
取存儲路徑 |
explain select * from tname |
db.tname.find({id=3}).explain() |
二, mangodb安裝
01,配置yum地址
1 cat /etc/yum.repos.d/mangodb.repo 2 [mongodb-org] 3 name=MongoDB Repository 4 baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el$releasever/ 5 gpgcheck=0 6 enabled=1
yum makecache
02,安裝mangodb
yum install mongodb-org
等待安裝完成
03,配置mangodb
更改限制ip 由於我內網環境,python爬蟲使用,設置為所有能訪問
啟動: service mongod start
停止: service mongod stop
04,使用mangodb
本地連接: mongo 127.0.0.1:27017
文章文字借鑒: https://www.cnblogs.com/syomm/p/5760441.html
https://www.cnblogs.com/fanhuo/p/9822853.html