MongoDB高階(高階索引使用)

2021-10-02 22:28:52 字數 2155 閱讀 1007

案例:建立文件users

,

"tags":[

"music",

"cricket",

"blogs"

], "name"

:"clound"

}

索引陣列字段,在陣列中建立索引,需要對陣列中的每個字段依次建立索引。所以在我們為陣列 tags 建立索引時,會為 music、cricket、blogs 三個值建立單獨的索引。

案例:

> db.users.ensureindex(

)

建立索引後,我們可以這樣檢索集合的 tags 字段:

> db.users.find(

)

使用explain命令來進行驗證索引的使用:

> db.users.find(

).explain(

)

索引子文件字段

假設我們需要通過 city、province、pincode 欄位來檢索文件,由於這些欄位是子文件的字段,所以我們需要對子文件建立索引。

案例:

> db.users.ensureindex(

)

通過子文件的索引來進行檢索資料:

> db.users.find(

)

記住查詢表示式必須遵循指定的索引的順序。所以上面建立的索引將支援以下查詢:

> db.users.find(

)

mongodb的原子操作:

概念介紹:所謂原子操作,就是要麼執行成功,要麼執行失敗,執行成功完成既定任務,執行失敗還原執行前的狀態。

常見的原子操作命令總結:

1、$set

用來指定乙個鍵並更新鍵值,若鍵不存在則建立。

}

2、$unset

用來刪除乙個鍵。

3、 $inc

$inc 可以對文件的某個值為數字型(只能為滿足要求的數字)的鍵進行增減的操作。

4、$push

把 value 追加到 field 裡面去,field 一定要是陣列型別才行,如果 field 不存在,會新增乙個陣列型別加進去。

5、 $pushall

同 $push ,只是一次可以追加多個值到乙個陣列欄位內。

6、$pull

從陣列 field 內刪除乙個等於 value 值。

7、$addtoset

增加乙個值到陣列內,而且只有當這個值不在陣列內才增加。

8、$pop

刪除陣列的第乙個或最後乙個元素。

9、 $rename

修改欄位名稱:

10、$bit

位操作,integer 型別

查詢分析explain:

explain() 操作提供了查詢資訊,使用索引及查詢統計等。有利於我們對索引的優化。接下來我們在 users 集合中建立 gender 和 user_name 的索引:

> db.users.ensureindex(

)> db.users.find(

,).explain(

)

hint()的使用:

雖然 mongodb 查詢優化器一般工作的很不錯,但是也可以使用 hints() 來強迫 mongodb 使用乙個指定的索引。通過這種方法在某些情形下會提公升效能。

範例:指定使用 gender 和 user_name 索引欄位來查詢:

> db.users.find(

,).hint(

可以使用 explain() 函式來分析以上查詢:

> db.users.find(

,).hint()

小節:本博文主要簡要的介紹了mongodb支援索引子文件字段,支援原子操作,explain() 可以用於查詢分析,hint() 可以強制指定使用哪乙個索引。

未完待續更新中。。。

MongoDB查詢高階

投影 對返回的結果進行篩選,返回必要的字段 db.col.find 引數為字段與值,值為1表示顯示 特殊 對於 id列缺省是顯示的,如果不顯示需要明確設定為0 mongodb查詢條件除了支援使用比較運算子之外,還支援範圍 正則 邏輯運算子 分頁 排序 統計個數等 邏輯運算子 and條件 find 方...

mysql高階索引 Mysql高階 索引優化全解

是否會使用索引,是mysql的關鍵 1.sql效能下降原因查詢語句寫的不好,連線子查詢太多,沒有建索引等等 索引失效 關聯jion表過多 伺服器引數設定不合適2.索引優化 索引是什麼?索引就是一種排好序的查詢資料結構,常見模型有雜湊表 有序陣列 二叉搜尋樹 目前最常用的innodb引擎使用的模型是b...

mongoDB的高階學習

chunk的遷移是通過balance程序完成的,那麼向已經分片好的集合插入資料的時候,balance也開始了對chunk在shard上的均衡,為了防止資料大量寫入的時候,balance程序也有可能開始chunk的遷移.為了不影響mongod的讀寫效能,可以根據需求選擇適宜的時間來開啟balance ...