- MongoDB進階與實戰:微服務整合、性能優化、架構管理
- 唐卓章
- 588字
- 2021-05-19 17:44:38
2.4 查詢文檔
2.4.1 查詢全部數據
db.collection.find方法可以用于集合數據的查詢,代碼如下:

如果查詢返回的條目數量較多,mongo shell則會自動實現分批顯示。默認情況下每次只顯示20條,可以輸入it命令讀取下一批。
實際上,find命令返回的是一個游標(cursor)對象,mongo shell對batchSize做了限定,該大小可通過變量DBQuery.shellBatchSize修改。
使用游標對象提供的API,可以對全部結果集進行遍歷,代碼如下:

2.4.2 指定條件查詢
例A,查詢帶有“mongodb”標簽的book文檔:

例B,查詢分類為“novel”的book文檔:

例C,按照id查詢單個book文檔:

例D,查詢分類為“literature”、收藏數超過10個的book文檔:

2.4.3 排序、分頁
(1)指定排序
如果不指定排序條件,MongoDB則會默認按物理順序返回,這里我們可以指定按出版時間(publishedDate)降序返回,代碼如下:

(2)分頁查詢
skip用于指定跳過記錄數,limit則用于限定返回結果數量。
可以在執行find命令的同時指定skip、limit參數,以此實現分頁的功能。比如,假定每頁大小為8條,查詢第3頁的book文檔,代碼如下:

在find命令中使用limit=1,可以明確限定返回文檔的數量,除此之外還可以使用另一個快捷方法:findOne。

2.4.4 使用投射
投射(projection)可以讓數據庫只返回一部分被關注的字段,而不是整個文檔。
比如,可以讓數據庫僅僅返回book文檔中的標題(title)、收藏數(favCount)字段,代碼如下:

默認情況下,_id會被一起返回,可以在projection參數中明確將其去除,代碼如下:

2.4.5 查詢限定符
比較操作符見表2-5。
表2-5 比較操作符

邏輯操作符見表2-6。
表2-6 邏輯操作符

數組操作符見表2-7。
表2-7 數組操作符

- Flask Web全棧開發實戰
- Mastering NetBeans
- Mastering Entity Framework Core 2.0
- Intel Galileo Essentials
- Visual C++實例精通
- NativeScript for Angular Mobile Development
- 名師講壇:Java微服務架構實戰(SpringBoot+SpringCloud+Docker+RabbitMQ)
- Python時間序列預測
- 小學生C++創意編程(視頻教學版)
- Learning Python Design Patterns
- 批調度與網絡問題的組合算法
- ExtJS高級程序設計
- Python語言科研繪圖與學術圖表繪制從入門到精通
- C陷阱與缺陷
- 愛上C語言:C KISS