mongoDB基礎篇——NoSQL特性及MongoDB資料查詢
本文將進一步介紹MongoDB的特點,深入瞭解面向集合操作的資料庫增刪改查。
一、MongoDB特性
結合傳統關係型資料庫,我們從以下四個方面再度深入認識NoSQL資料庫,以MongoDB為代表
1、事務:
傳統關係型資料庫嚴格遵循資料庫事務的四個特性ACID,在NoSQL資料庫中,不一定遵循傳統資料庫的一些基本要求;在而MongoDB 3.2在2015MongoDB分享會上MongoDB開發團隊提出,目前MongoDB主要把分為兩塊,傳統關係型和NoSQL,這表明MongoDB除了擁有傳統DB豐富查詢語言、強一致性、豐富的索引之外,還囊括了NoSQL高度靈活、高擴充套件、高效能的特點。
2、分散式儲存:
傳統資料庫庫儲存資料特點是將資料記錄統一存放在DB表中,同文件儲存的特點一樣,最終均面臨一個數據容量和讀取速度的問題。NoSQL資料庫是以分散式進行儲存,通過儲存資料節點,各節點依次向下延伸,減輕了單個數據庫儲存壓力。MongoDB作為典型的NoSQL資料庫,自然也許有分散式儲存的特點
3、水平可擴充套件
正是由於NoSQL資料庫分散式儲存的特點,也使得原本需要通過擴充磁碟容量以增加資料庫儲存量的擴充套件方式,NoSQL資料庫便可通過節點水平擴張,增加節點儲存的數量來擴大資料儲存量。
4、讀寫快速
NoSQL 資料庫通過key-value形式儲存資料,相對於傳統資料庫在查詢讀寫時通常遍歷整張表而言,以鍵值對儲存資料提高了對資料庫的讀寫速度。
二、MongoDB 資料操作
MongoDB 我們稱之為NoSQL資料庫,也不時看到這樣的說法“MongoDB 是一個介於關係型資料庫和非關係型資料庫之間的產品”,之所以這樣對MongoDB 進行描述,原因在於它對資料庫操作在事務等方面又貼近於關係型資料庫特點,而本身又具備非關係型資料塊靈活、分散式的特點。資料庫操作語法跟js面向物件的查詢語句很相似。這在之前的部落格中有初步介紹。現在通過詳細介紹MongoDB 的資料庫操作語句,體會MongoDB 的特性。
查詢
1、$in和$nin
類似於關係型資料庫中in關鍵字
2、$or和$nor
3、$size
專門用於查詢指定長度的資料記錄
4、正則表示式
MongoDB的查詢語句跟js語法很像,同樣也可以通過正則表示式進行資料查詢
5、遊標
通過遊標.hasNext(),返回true即下一條記錄不為空,才開始查詢下一條記錄,而不是全部一次性將所有符合條件的記錄都查出來。
6、Distinct
7、null
查詢出某記錄為空或者該記錄不存在的資料
更新
更新語句含有以下四個引數控制更新範圍和記錄
Db.collection.update(A,B,C,D)
A:篩選條件
B:更新內容
C:更新或插入
D:如果有多條記錄是否全部更新
例如:
Db.testImage.update({name:“user1”,{sex:male}});
將testImage集合中name=user1這條記錄的sex屬性更新為male;預設第三個引數(更新或插入)值為true,意思是:如果該條記錄存在,如已經有了一條({name:”user1”}{sex:”famale”})則直接更新sex屬性,如果是攢在name為user1的記錄,但sex屬性為空,則直接加上該屬性即可。
插入:Insert
這一注意save()方法,它表示例如db.mycollection.save(x);//如果存在該條記錄,更新;如果不存在,插入。注意區分。
通過對MongoDB為代表的NoSQL資料庫的進一步認識,結合之前部落格記錄的積累,對於NoSQL資料庫例如Redis、MongoDB這些具有相同特點的資料庫都應該有了初步的認識。結合專案中隊NoSQL資料庫的使用,相信對於這部分內容應該有一個清晰的輪廓和實戰運用能力。