您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關MONGODB如何查詢晉級,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
MONGODB的使用最近是越來越“不慌張”,某網站上關于MONGODB 部分替換傳統數據庫表的設計的思路是越來越多,其實mongoDB 可以做的事情很多,不過目前的問題是開發人員可能使用MONGODB 思路還處于萌芽的狀態,另外可能一些 SQL 到 MONGO FIND 的查詢語句不大熟悉,其實MONGO FIND 的寫法不復雜,有些SQL 的高級查詢 MONGODB 大多數都是么有問題,有問題也大多是人在設計MONGODB 的collection 的問題,不過這也不是什么問題,加個字段,7*24 小時,對其他的業務系統,加一個字段考慮的問題頗多,而MONGO 大多不用考慮,這點是令人欣慰的。
接上期,本期MONGODB 查詢也得復雜一點了。
有興趣可以看看JSON的整體格式規范,1個小時就OK了
首先我們的有一個查詢的數據基礎,這樣在討論起來才有的說
上面就是本次要discuss的數據,當然不是這一條,僅僅展示大致的格式
接上期說
需求1 需要查詢 qty 為 50 的數據,途中的查詢語句很清晰,大括號里面的中括號,鍵值用雙引號引起,之后跟上你的要查詢的數據
select * from inventory where qty = 50 這樣的傳統SQL 的寫法
需求2 傳統的DBA 會對上面的寫法說點什么,不能用* ,用哪個字段就要寫哪個字段,MONGO 也是一樣,請在查詢結果中緊緊展示 qty 其他字段都不展示, 寫法就是在剛才的查詢后面添加一個條件過濾的方式,需要顯示的字段標記 1 不需要顯示的顯示標記0
select qty from inventory where qty = 50
需求3 顯示SIZE 字段中 H 屬性為 10的數據
select item,qty,size from inventory where size.h = 10
如果數據里面有嵌套,則需要從根部的節點開始寫起
需求 4 我們查詢 SIZE.H 大于等于10 的并且 ITEM 是PLANNER 的數據
select item,qty,size.h,size.w from inventory where size,h >= 10 and item = "planner"
需求5 有一些需求在傳統的數據庫中是不存在的,你可以查詢字段是不是為 NULL ,空,但你在已經固化好的表SCHEMA 中,你是不會問每行的數據的字段是不是存在,但MONGODB 的字段在每一個 document 可能是不存在的。所以下面的語句在傳統的數據庫中是沒有可比性的
下面的查詢就是查詢 status 這個KEY 存在于 inventory collection 的具體記錄,當然你也可以查詢到底有多少 docuemnts 存在在這個collection的數量。
計算collection中有多少 有status 這個KEY的documents 的數量
非要用傳統的SQL 語句表達,select count(*) from inventory as a where status is not null (只能是貼近,因為其實用IS NOT NULL 表達不準確)
需求6 如果我們要查詢一個數值的范圍,怎么查詢,這里面的提醒有些 DEVELOPER ,就算是MONGODB 的SCHEMA 你也不能想一出是一出,如果你后期的查詢的數值是用 RANGE 的方式查詢的,建議還是使用非,“”雙引號的字符來進行,這樣以后處理起來,性能上不是很好。
select item,qty,size.h,size.w from inventory where qty between 45 and 50
需求 7 傳統查詢中的 IN 是用的比較多,怎么來用MONGODB 的方式來表達
select item,qty,size.h,size.w from inventory where qty in (45,50)
需求 8 排序和 輸出前幾條數據
限制顯示數據的數據量,在末尾加入.limit(顯示數量) ,和SQL SERVER top ,mysql 的 limit , ORACLE rownum 一樣
排序的方法也是很簡單,在查詢的語句后面加上sort({你要排序的字段以及你是正序還是倒序}), 這里建議如果沒有必要,不要進行排序。
需求9 最后我們看一下,一個比較不常見的document,這是一個數組中包含嵌套的數據存儲方式,且不說這樣好不好,我們現在的需求就是查詢 TAGS 中type2 是 IRON 的記錄
下面是這個document的格式
查詢方法 需要使用特殊的 elemMatch查詢方法,來查詢這樣的需求
看完上述內容,你們對MONGODB如何查詢晉級有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。