.NET 云原生架構(gòu)師訓(xùn)練營(yíng)(模塊二 基礎(chǔ)鞏固 MongoDB 聚合)--學(xué)習(xí)筆記
2.5.5 MongoDB -- 聚合
排序
索引類型
創(chuàng)建索引
排序
// 升序
db.getCollection('author').find({}).sort({"age": 1}).limit(20)
// 降序
db.getCollection('author').find({}).sort({"age": -1}).limit(20)
// 組合
db.getCollection('author').find({}).sort({"age": 1, "name": -1}).limit(20)
索引類型
單鍵索引
復(fù)合索引
多鍵索引
地理空間索引
文本索引
索引屬性
唯一索引
TTL索引
不區(qū)分大小寫索引
稀疏索引
部分索引
https://docs.mongodb.com/manual/indexes/
// 使用 explan 查看 mongo 查詢過程中的執(zhí)行情況
db.author.find({"name": "user1"}).explain("executionStats")
創(chuàng)建索引
// 創(chuàng)建索引,-1 代表降序方式創(chuàng)建
db.collection.createIndex( { name: -1 } )
// 復(fù)合索引
db.products.createIndex( { "item": 1, "stock": 1 } )
//多鍵索引
{ _id: 1, item: "ABC", ratings: [ 2, 5, 9 ] }
db.survey.createIndex( { ratings: 1 } )
//地理空間索引
db.places.insert(
{
loc : { type: "Point", coordinates: [ -73.97, 40.77 ] },
name: "Central Park",
category : "Parks"
}
)
db.places.createIndex( { loc : "2dsphere" } )
//文本索引,一個(gè)集合只能創(chuàng)建一個(gè)
db.reviews.createIndex( { comments: "text" } )
db.reviews.createIndex(
{
subject: "text",
comments: "text"
}
)
// 索引屬性(唯一索引)
db.members.createIndex( { "user_id": 1 }, { unique: true } )
// 索引屬性(TTL索引),可以設(shè)置過期時(shí)間
db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } )
// 索引屬性(不區(qū)分大小寫索引)
db.collection.createIndex( { "key" : 1 },
{ collation: {
locale :
,
strength :
}
} )
// 索引屬性(稀疏索引)
db.addresses.createIndex( { "xmpp_id": 1 }, { sparse: true } )
// 索引屬性(部分索引)
db.restaurants.createIndex(
{ cuisine: 1, name: 1 },
{ partialFilterExpression: { rating: { $gt: 5 } } }
)
覆蓋索引:所有查詢字段是索引的一部分,所有查詢返回字段在同一個(gè)索引中
低效操作:
取反效率低(比如不等于,因?yàn)榈扔跁?huì)命中索引,取反不會(huì))
$nin 總是進(jìn)行全表掃描
一次查詢只能使用一個(gè)索引,$or 除外,但 $or 使用多個(gè)索引查詢之后再將結(jié)果進(jìn)行合并的效率并不高,所以不推薦使用(盡可能使用$in)
嵌套對(duì)象字段索引與基本字段的處理方式一致
使用索引的場(chǎng)景:
集合較大
文檔較大
選擇性查詢
// 后臺(tái)創(chuàng)建索引,如果使用工具線程,可能會(huì)阻塞查詢
db.people.createIndex({zipcode: 1}, {background: true})
索引基數(shù):數(shù)據(jù)類型多,索引基數(shù)高,索引效率高,如果數(shù)據(jù)比如性別只有男,女兩種數(shù)據(jù),索引效率低
課程鏈接
.NET云原生架構(gòu)師訓(xùn)練營(yíng)講什么,怎么講,講多久
評(píng)論
圖片
表情
