一:MongoDB簡介mysql
MongoDB是一個面向文檔的數據庫,而不是關係型數據庫。具備更好的擴展性,MongoDB從一開始設計的時候就是奔着分佈式去的,只須要簡單的配置就能夠實現高效的分佈式存儲,被大量的運用於大數據領域。而且MongoDB再也不有預約義模式:文檔的鍵(key)和值(value)再也不是固定的類型和大小。正則表達式
二:MongoDB與其餘類型數據庫的比較sql
1.MongoDB與MySQL:MongoDB是非關係型數據庫,數據量大。而MySQL是關係型數據庫,基於硬盤存儲的,當併發量過大的時候,mysql可能沒法支撐。mongodb
2.MongoDB與Redis:MongoDB是最像關係型的非關係型數據庫,更加適用於大數據。而Redis更傾向於併發較小,數據較小,性能更高。數據庫
三:安裝編程
1: 4.0下載地址https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.8-signed.msijson
2:安裝時去除多餘的組件安裝提升速度數組
啓動MongoDB,默認端口好(27017)安全
三:MongoDB的使用併發
1.首先將MongoDB的安裝文件夾下的bin目錄添加到環境變量裏面
2.打開cmd,輸入mongo
3.開啓用戶驗證
3.1在配置環境中配置安全認證
key都是固定的不能隨便寫,每個key都有特殊含義。其中 {"role":"root"} role固定的key root是角色的名字 有可選範圍如root readWrite read等。
exit退出cmd後,重啓服務:
4. 登陸
方式一:帳號密碼
方式二:遊客
四:庫的操做
use 數據庫名稱 ---->建立數據庫 db.dropDatabase ---->刪除數據庫 show dbs ---->查看全部數據庫 use ---->切換數據,若是不存在會自動建立,新建的數據庫是查看不到的,由於裏面沒有數據
#建立數據庫: use 數據庫名稱 #若是有則切換沒有則建立新的,注意的是若是若是庫中沒有數據show dbs 中則不顯示! # 查看數據庫: show dbs #刪除 db.dropDatabase() #注意區分大小寫
五:集合的操做
集合是一個存儲數據類型的容器類比mysql中的表
#建立集合: db.user #查看集合: show collections show tables # 一樣的數據集合中沒有數據則 不會顯示 # 一下數據庫之間沒有任何關係僅僅是名字有相同部分 數據之間的關係須要應用程序維護 db.blog db.blog.user db.blog.common #刪除集合: db.blog.user.drop()
六:基本數據類型
二、這樣有不少好處:易於理解、易於解析、易於記憶。然而從另外一方面說,由於只有null、布爾、數字、字符串、數字和對象這幾種數據類型,因此JSON的表達能力有必定的侷限。
三、雖然JSON具有的這些類型已經具備很強的表現力,但絕大數應用(尤爲是在於數據庫打交道時)都還須要其餘一些重要的類型。例如,JSON沒有日期類型,這使得本來容易日期處理變得煩人。另外,JSON只有一種數字類型,沒法區分浮點數和整數,更別區分32位和64位了。再者JSON沒法表示其餘一些通用類型,如正則表達式或函數。
四、MongoDB在保留了JSON基本鍵/值對特性的基礎上,添加了其餘一些數據類型。在不一樣的編程語言下,這些類型的確切表示有些許差別。下面說明了MongoDB支持的其餘通用類型,以及如何正在文檔中使用它們
#一、null:用於表示空或不存在的字段 d={'x':null} #二、布爾型:true和false d={'x':true,'y':false} #三、數值 d={'x':3,'y':3.1415926} #四、字符串 d={'x':'egon'} #五、日期 d={'x':new Date()} d.x.getHours() #六、正則表達式 d={'pattern':/^egon.*?nb$/i} 正則寫在//內,後面的i表明模式,可省略: i 忽略大小寫 m 多行匹配模式 x 忽略非轉義的空白字符 s 單行匹配模式 #七、數組 d={'x':[1,'a','v']} #八、內嵌文檔 user={'name':'jerry','addr':{'country':'China','city':'YT'}} user.addr.country #九、對象id:是一個12字節的ID,是文檔的惟一標識,不可變 d={'x':ObjectId()} #案例: db.tb.insert({"a":null,"b":1.1,"c":true,"d":100,"e":"aaaaaa","f":new Date(),"g":/^jerry.*nice$/i,"h":[1,2],"j":{"name":"smallJerry"}}) db.tb.find() db.tb.find().pretty() # 格式化顯示
七:查詢數據
=============================比較運算============================= find 查找全部匹配數據 findOne 查找第一個匹配的 # SQL:=,!=,>,<,>=,<= # MongoDB:{key:value}表明什麼等於什麼,"$ne","$gt","$lt","gte","lte",其中"$ne"能用於全部數據類型
> < != >= <=
gt lt ne gte lte
find 查找全部匹配數據 findOne 查找第一個匹配的 #一、select * from db1.user where name = "cxx"; db.user.find({'name':'cxx'}) #二、select * from db1.user where name != "cxx"; db.user.find({'name':{"$ne":'cxx'}}) #三、select * from db1.user where id > 2; db.user.find({'_id':{'$gt':2}}) #四、select * from db1.user where id < 3; db.user.find({'_id':{'$lt':3}}) #五、select * from db1.user where id >= 2; db.user.find({"_id":{"$gte":2,}}) #六、select * from db1.user where id <= 2; db.user.find({"_id":{"$lte":2}})
=============================邏輯運算============================= # SQL:and,or,not # MongoDB:字典中逗號分隔的多個條件是and關係,"$or"的條件放到[]內,"$not" #一、select * from db1.user where id >= 2 and id < 4; db.user.find({'_id':{"$gte":2,"$lt":4}}) #二、select * from db1.user where id >= 2 and age < 40; db.user.find({"_id":{"$gte":2},"age":{"$lt":40}}) #三、select * from db1.user where id >= 5 or name = "cxx"; db.user.find({ "$or":[ {'_id':{"$gte":5}}, {"name":"cxx"} ] }) #四、select * from db1.user where id % 2=1;(除2餘1) db.user.find({'_id':{"$mod":[2,1]}}) #五、上題,取反 db.user.find({'_id':{"$not":{"$mod":[2,1]}}})
=============================成員運算============================= # SQL:in,not in # MongoDB:"$in","$nin" #一、select * from db1.user where age in (20,30,31); db.user.find({"age":{"$in":[20,30,31]}}) #二、select * from db1.user where name not in ('alex','yuanhao'); db.user.find({"name":{"$nin":['alex','yuanhao']}})