MongoDB高階查詢詳細

張龍豪發表於2015-07-13

前言

前幾篇,老玩家繞道即可,新手晚上閒著也是蛋疼,不如把命令敲一邊,這樣你就會對MongoDB有一定的掌握啦。如果沒有安裝MongoDB去看我的上一篇部落格  MongoDB下載安裝與簡單增刪改查 

前奏:啟動mongdb資料庫服務,並進入shell介面

> cmd

> cd C:\Program Files\MongoDB\bin  --進入mongdb安裝檔案的bin目錄下。

> net start mongoDB;  --開啟mongoDB資料庫服務

> mongo   --進入shell介面

常用命令

> show dbs    -- 檢視資料庫列表

> use admin   --建立admin資料庫,如果存在admin資料庫則使用admin資料庫

> db   ---顯示當前使用的資料庫名稱

> db.getName()  ---顯示當前使用的資料庫名稱

> db.dropDatabase()  --刪當前使用的資料庫

> db.repairDatabase()  --修復當前資料庫

> db.version()   --當前資料庫版本

> db.getMongo()  --檢視當前資料庫的連結機器地址 

> db.stats() 顯示當前資料庫狀態,包含資料庫名稱,集合個數,當前資料庫大小 ...

> db.getCollectionNames()   --檢視資料庫中有那些個集合(表)

> show collections    --檢視資料庫中有那些個集合(表)

> db.person.drop()  --刪除當前集合(表)person

MongoDB接入Javascrip風格語法,for,while,next,hasNext,forEach,toArray,findOne,limit

Note:

1、p={name:"張龍豪",age:18} 這個不是規範的json格式,使用這種類似javascript語法,物件會自動補全為規範的json格式{"name":"張龍豪","age":18}.

2、我在這裡插入2條資料,一條是insert語法,一條是save語法,這裡的insert與save是一樣的功能。

Note:這裡我主要用啦一個for語法,迴圈插入啦4條資料,是不是有點小激動。哈哈,mongodb就是這麼任性。

Note:這裡是吧查詢出來的

1、while:作為程式設計師應該都不陌生他是個迴圈。

2、hasNext: cursor集合遍歷,是否還有資料。

3、printjson:輸出集合中的文件

4、next:當前文件,並向下遍歷。

Note:forEach迴圈輸入,必須定義一個函式供每個遊標元素呼叫。

Note:遊標也可以當作陣列來用。

Note:遊標轉換為真實的陣列型別,使用。

Note:findOne,返回結果集中的第一條資料。limit(3),返回結果集中的前三條資料。

MongoDB中的高階查詢

面向文件的NoSql資料庫重要解決的問題不是高效能的併發讀寫問題,而是保證海量資料儲存的同時,具有比一般資料庫更加良好的查詢效能。

Note:條件操作符號: > 、 < 、 >= 、<= 

1、 $gt //大於 > ,$lt //小於 < ,$gte //大於等於 >= ,$lte //小於等於

2、{"filed":{$op,value}}  //filed欄位 ,$op條件操作符號,value值。

3、{"age":{$gt:1}} : person集合中年齡大於1的所有資料文件

 Note:$all匹配所有,類似t-sql中的in,但是t-sql中的in是滿足括號裡面的任何一個都能出資料,而mongodb中的$all則必須滿足[]中的所有值。

1、{age:{$all:[7,9]}}:age陣列中只要有7和9就滿足條件。如果只有7,沒有9則不符合條件。

Note:$exists判斷欄位是否存在,(true/false)

1、{city:{$exists:true}}: 集合中存在city這個欄位的資料

Note:$mod取模運算。

1、{age:{$mod:[7,6]}}:集合中模7餘6的資料

Note:$ne不等於

Note:$in包含,$nin不包含。跟t-sql中的in,not in一樣。

1、{age:{$in:[10,11]}}:如果age是陣列的話,只要陣列包含in中條件的任何一條資料,都能被檢索出來。不是陣列,則只要滿足in中的任何一個條件資料,也可以被檢索出來。

Note:陣列元素個數。

1、{age:{$size:4}}:age陣列元素個數為4的資料結果集。

Note:$not正則匹配,不包含以張開頭的資料。

Note:skip,limit,sort,count

1、skip(2):從資料集的第二條開始查詢

2、limit(2) : 依次查出2條資料。

3、sort({age:1}) : 1.正序查詢,-1倒敘查詢。

4、count():結果集總數。

相關文章