摘要
上篇文章學習了mongodb在windows上的安裝,以及如何開啟mongodb,最后列舉了簡單的增刪改查操作。本篇將繼續深入學習一下增刪改查。
相關文章
CRUD
通過上篇文章,我們知道collection中存儲的每個對象是一個document對象。document是以鍵值對存在的json形式的對象。我們都知道json的value中存儲的數據,可能是單個對象,字符串,數組,也可能是嵌套的json等類型的數據。
insert
插入操作又分為:單個插入和批量插入。
案例:創建一個user,該對象包括用戶名稱,所在的公司,公司包含公司名稱及地址信息。

通過上面的插入操作,我們發現user中包括一個嵌套的company json對象。
后來由於公司app需要添加通訊錄功能,需要保存該用戶的好友。這是user的friends就可以是一個數據,用來保存用戶的name

關於批量插入的操作,查找了很久也沒找到合適的方式,估計是mongodb的javasrcipt shell不支持批量的操作吧。不過你可以使用c#驅動,變相的實現批量插入,一個循環一條一條的插入。
find
查找操作,查找支持>,>=,<,<=,!=,=,在mongodb中這些比較符對應的為$gt,$gte,$lt,$lte,$ne。
插入測試數據,用來做find操作

查找年齡等於20的用戶

查找年齡大於等於18的用戶

其他的比較符不再舉例,模仿上圖$gte的操作。
$exists 是否存在某個字段
查找存在company字段的document

查找不存在address字段的user

$in:在某個范圍
查找公司地址在beijing,shanghai的用戶

$nin:不在某個范圍
db.users.find({"company.address":{$nin:["beijing","shanghai"]}})

$or:或者
查找用戶公司在北京,或者用戶年齡滿20周歲的用戶

正則表達式查詢

復雜條件查詢可以通過$where實現,可以將js的function 作為$where的值,使用js的實現復雜的條件查詢。

update
mongodb的更新,分為整體更新和局部更新。
整體更新:就是所有的不管變化沒變化都需要update,有點類似ef中的更新,先查詢出對象,然后修改一個字段的值,再更新回去。

局部更新:只是對需要的字段進行更新。
mongodb為我們提供了兩個關鍵字:$inc,$set用來實現mongodb的更新操作。
$inc:增量,是increase的縮寫。在原來的基礎上加上某個值。
修改年齡為29的用戶的年齡,在這個基礎上加上-9

$set
用法類似sql中的set

update方法第三個參數,bool類型參數,默認為false,如果為true,則標識如果不存在則創建的操作。
更新名稱為zhangsan的用戶信息,不存在則創建

批量更新
將第四個參數設置為true

remove(where)

總結
本篇文章學習了mongodb的增刪改查的操作。動手操作一遍加深印象。
參考
http://www.cnblogs.com/huangxincheng/archive/2012/02/19/2357846.html
