❖ MongoDB 高階查詢
參考官方文件(圖文並茂非常好看):Getting Started - MongoDB Documentation
MongoDB的查詢功能非常強大,同時有些地方也會有點複雜。所以需要下點功夫學習和操練才能用好。
關於Mongo Shell
當我們進入Mongo Shell
客戶端後,實際上是進入了一個Javascript語言
的互動環境。
也就是說,MongoDB中的很多命令,尤其是包括定義函式等高階命令,實際上都是Javascript語言,甚至說可以是jQuery
。
瞭解了這點,一些高階命令如Aggregation學起來就會放鬆很多。
官方說明:
基本查詢功能
比較運算
-
:
等於 -
$lt
: Less Than -
$gt
: Greater Than -
$gte
: Greater Than or Equal -
$ne
: Not Equal
# age大於等於18
db.mycollection1.find( { age:{$gt: 18} } )
邏輯運算
$and
$or
db.mycollection1.find( {
$or: [
{ age: {$gte: 20} },
{ salary: {$gt: 5000} },
{ job: "HR" }
]
} )
範圍運算
$in
-
$nin
: Not In
db.mycollection1.find( {
age: {
$in: [10, 20, 30]
}
} )
正規表示式
有兩種方法:
/表示式內容/
{$regex: "表示式內容"}
db.mycollection1.find( {
name: /^Ja\w+$/
} )
# 或
db.mycollection1.find( {
name: {
$regex: "/^Jaso\w?$"
}
} )
limit和skip
# 限定顯示條數
db.mycollection1.find().limit(數量)
# 跳過指定第幾條資料
db.mycollection1.find().skip(2)
# 混合使用
db.mycollection1.find().limit(10).skip(3)
自定義函式查詢
自定義查詢是指使用自定義函式,格式為$where: function(){...}
db.mycollection1.find( {
$where: function() {
return this.age >= 18;
}
} )
投影
即搜尋的返回值中,只顯示指定的某些欄位。欄位指為0的不現實,指為1的顯示,預設為1。
# 格式為:
db.mycollection1.find(
{查詢條件},
{顯示與否的選項}
)
# 如:
db.mycollection1.find(
{},
{ _id: 0, name: 1, age: 1 }
)
排序
可以按指定的某些欄位排序,欄位標記為1的為Asc升序,標記為-1的為Desc降序。
db.mycollection1.find().sort({ name:1, age:-1 })
統計
使用count()函式。
db.mycollection1.find().count()
db.mycollection1.count( {查詢條件} )
消除重複
使用distinct()函式。
# 格式為:
db.集合名.distinct( "指定欄位", {查詢條件} )
# 如
db.mycollection1.distinct(
"job",
{ age: {$lt: 40} }
)
聚合管道 Aggregation
Aggregation是MongoDB特有的一種Pipline管道型、聚合查詢方式。語法稍微複雜一些。
聚合管道可以達到多步驟的分組、篩選功能。這個管道中的每一個步驟,成為一個stage
。
常用的管道有:
-
$match
:簡單的根據條件過濾篩選 -
$group
:將資料分組,一般配合一些統計函式,如$sum
。 -
$project
:修改document的結構。如增刪改,或建立計算結果 -
$lookup
: -
$unwind
:將List列表型別的Document進行拆分 $sort
$limit
$skip
語法格式為:
db.集合名.aggregate( [
{管道表示式1},
{管道表示式2},
{管道表示式2}
] )
示例:
db.Orders.aggregate( [
{$match: {
status: "A"
} },
{$group: {
_id: "$cut_id",
total: { $sum: "$amount" }
} }
] )
管道的Map Reduce
相關文章
- Mongodb高階查詢MongoDB
- MongoDB高階查詢詳細MongoDB
- 高階查詢
- mongoDB高階查詢這一篇就夠了MongoDB
- SQL高階查詢SQL
- python資料庫-mongoDB的高階查詢操作(55)Python資料庫MongoDB
- 資料庫高階查詢之子查詢資料庫
- sql-server高階查詢SQLServer
- mysql高階查詢語句MySql
- 學會寫高階查詢
- sql之20高階查詢SQL
- Hive高階操作-查詢操作Hive
- 「Oracle」Oracle高階查詢介紹Oracle
- LINUX find的高階查詢Linux
- 理解索引(中):MySQL查詢過程和高階查詢索引MySql
- mongodb查詢MongoDB
- Mongodb高階特性MongoDB
- Mongodb高階更新MongoDB
- mysql多條件過濾查詢之mysq高階查詢MySql
- SQL語言基礎(高階查詢)SQL
- 15、Oracle中的高階子查詢Oracle
- MongoDB - 聚合查詢MongoDB
- MongoDB ( 五 )高階_索引MongoDB索引
- oracle學習筆記(十一) 高階查詢Oracle筆記
- Google高階搜尋技巧之高階語法查詢指令Go
- MongoDB查詢總結MongoDB
- mongodb慢查詢分析MongoDB
- MongoDB查詢條件MongoDB
- MongoDB條件查詢MongoDB
- MongoDB 常用查詢語法MongoDB
- MongoDB查詢內嵌文件MongoDB
- MongoDB慢查詢與索引MongoDB索引
- Mongodb 關聯表查詢MongoDB
- MongoDB日期型別查詢MongoDB型別
- Mongodb 常用的查詢方法MongoDB
- Oracle與Mysql的高階查詢與難點sqlOracleMySql
- MySQL 優化五(關聯查詢子查詢以及 in 的效率問題)(高階篇)MySql優化
- SpringBoot操作ES進行各種高階查詢Spring Boot