mongo 建立索引 索引系列 雜湊索引

2021-10-12 21:46:50 字數 2369 閱讀 4044

本節我們將學習雜湊函式及其建立,並了解建立過程要注意些什麼。

mongodb分片中也支援雜湊分片鍵。在分片集群中,如果資料記錄的某欄位使用雜湊索引,在分片中僅需為該字段建立雜湊分片鍵即可。

no1

雜湊函式

雜湊索引使用乙個雜湊函式計算索引欄位的雜湊值。對於是巢狀文件的字段,雜湊函式將計算整個巢狀文件的雜湊值。在多鍵索引中不能使用雜湊索引。

mongodb在執行使用到雜湊索引的查詢時自動計算雜湊值,不需要應用程式自己計算查詢欄位的雜湊值。

從mongodb 4.0開始,mongo shell 提供 convertshardkeytohashed() 函式。該函式可以用來檢視乙個鍵的雜湊值。

no2

建立雜湊索引

對記錄的指定字段建立雜湊索引,命令如下:

db.collection.createindex(  )
no

3

注意事項

mongodb支援對任何單一字段建立雜湊索引,對於是巢狀文件的字段,雜湊函式將計算整個巢狀文件的雜湊值,(例如:「a」:,對於a欄位建立雜湊索引,雜湊函式將計算整個的雜湊值),但不支援在多鍵索引中使用雜湊索引(例如:不可對屬性是陣列的字段建立雜湊索引)。

我們不可在復合索引中使用雜湊索引,也不可在雜湊索引上指定唯一約束。但我們可以對同一字段建立乙個雜湊索引和非雜湊索引(例如:公升序/降序類索引):在進行範圍查詢時,mongodb將自動選擇公升序/降序索引。

注意mongodb雜湊索引在計算雜湊之前將浮點數截斷為64位整數。例如:對於雜湊索引屬性,資料內容為2.3, 2.2, 和 2.9的記錄對應的雜湊值是相同的。為了避免這種衝突,不建議對無法可靠轉換成64位整數的浮點數屬性字段建立雜湊索引。mongodb不支援對大於2的53次方的浮點值使用雜湊索引。

檢視鍵對應的雜湊值請檢視convertshardkeytohashed()。

powerpc和其他處理器中,mongodb 4.2都保證可以計算64位(8位元組)雙精度浮點數(-1.79e+308 ~ +1.79e+308)的雜湊值。

雖然大於2的53次方的浮點數屬性是無法配置的,但是客戶端仍然可以插入索引字段值是2的63次方的文件。

查詢部署的mongodb例項中所有資料庫中所有collection中的雜湊索引,可以在mongo shell中使用如下命令:

db.admincommand("listdatabases").databases.foreach(function(d)).foreach(function(c), idx.key));        if (idxvalues.includes("hashed")) ;      });   });});
檢查某個collection的索引字段資料內容是2的63次方位的值,使用如下命令:

// substitute the actual collection name for  // substitute the actual indexed field name for   db..find(  );
// substitute the actual collection name for // substitute the actual indexed field name for db..find(           }           return false;       }       return findval(this., math.pow(2, 63));   }})
譯者:程哲欣

mongodb中文社群翻譯小組成員

目前是中國移動杭州研發中心高階軟體工程師,資訊系統專案管理師專業資格。

業餘愛好:網球,游泳,跑步。

●關於複製,你了解多少(附副本集常見任務教程)

●5個要點,帶你了解mongodb的wiredtiger儲存引擎

●網路和配置強化

●審計●mongo命令列

●芒果xin動態 | mongodb創新獎提名、文件翻譯公告、專欄預告、徵文**...

mongo索引命令

mongodb全新建立索引使用ensureindex 方法,對於已存在的索引可以使用reindex 進行重建。1.1 建立索引ensureindex mongodb建立索引使用ensureindex 方法。語法結構 db.collection name.ensureindex keys option...

Mongo索引優化

單索引 復合索引 復合索引必須完全按照建索引的順序來查 db.events.createindex 只能利用username 1的排序 db.events.find sort 完全無法利用索引 db.events.find sort 多key索引 針對資料型別為陣列的情況來建立索引 unique 用...

Mongo 索引基本使用

語法簡介 db.collection name.createindex keys options keys 要建立索引的引數列表。如 其中key表示欄位名,1表示公升序排序,也可使用使用數字 1降序。options 可選引數,表示建立索引的設定。可選值如下 background,boolean,在後...