MongoDB

一: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()

六:基本數據類型

一、在概念上,MongoDB的文檔與Javascript的對象相近,於是能夠認爲它相似於JSON。JSON(http://www.json.org)是一種簡單的數據表示方式:其規範僅用一段文字就能描述清楚(其官網證實了這點),且僅包含六種數據類型。

二、這樣有不少好處:易於理解、易於解析、易於記憶。然而從另外一方面說,由於只有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']}})
相關文章
相關標籤/搜索