linux環境給mongodb創建索引


首先我們來了解索引,如果有基礎的可以直接看最后面的操作

可參照 DoNotStop 的CSDN 博客 ,全文地址請點擊:

https://blog.csdn.net/u013725455/article/details/52037897

 

創建索引:

mongodb使用createIndex()和ensureIndex()方法來創建索引,前者用於3.0及以上版本,后者用於3.0以下版本。
語法:
db.COLLECTION_NAME.ensureIndex(keys[,options])
keys:要建立索引的參數列表。如:{KEY:1},其中key表示字段名,1表示升序排序,也可使用使用數字-1降序。
options:可選參數,表示建立索引的設置。可選值如下:
background,Boolean,在后台建立索引,以便建立索引時不阻止其他數據庫活動。默認值為false。
unique,Boolean,創建唯一索引。默認值 false。
name,String,指定索引的名稱。如果未指定,MongoDB會生成一個索引字段的名稱和排序順序串聯。
partialFilterExpression, document.如果指定,MongoDB只會給滿足過濾表達式的記錄建立索引.
sparse,Boolean,對文檔中不存在的字段數據不啟用索引。默認值是 false。
expireAfterSeconds,integer,指定索引的過期時間
storageEngine,document,允許用戶配置索引的存儲引擎

> db.users.createIndex({"name":1}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }

例2:給name字段創建倒序索引

> db.users.createIndex({"name":-1}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 2, "numIndexesAfter" : 3, "ok" : 1 }

例3:給name,age字段創建組合索引

> db.users.createIndex({"name":1,"age":1}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 3, "numIndexesAfter" : 4, "ok" : 1 }

例4:在后台給age字段創建索引

> db.users.createIndex({age:1},{background:1})
{
    "createdCollectionAutomatically" : false, "numIndexesBefore" : 4, "numIndexesAfter" : 5, "ok" : 1 }

在后台創建索引的原因:
在前台創建索引期間會鎖定數據庫,會導致其它操作無法進行數據讀寫,在后台創建索引是,會定期釋放寫鎖,從而保證其它操作的運行,但是后台操作會在耗時更長,尤其是在頻繁進行寫入的服務器上。

查看索引:

MongoDB提供的查看索引信息的方法:
getIndexes()方法可以用來查看集合的所有索引,
getIndexKeys()方法查看索引鍵。
totalIndexSize()查看集合索引的總大小,
getIndexSpecs()方法查看集合各索引的詳細信息
例1: getIndexes()的用法

> db.users.getIndexes()
[
    {
        "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test1.users" }, { "v" : 1, "key" : { "name" : 1 }, "name" : "name_1", "ns" : "test1.users" }, { "v" : 1, "key" : { "name" : -1 }, "name" : "name_-1", "ns" : "test1.users" }, { "v" : 1, "key" : { "name" : 1, "age" : 1 }, "name" : "name_1_age_1", "ns" : "test1.users" }, { "v" : 1, "key" : { "age" : 1 }, "name" : "age_1", "ns" : "test1.users", "background" : 1 } ]

例2:getIndexKeys()的用法

> db.users.getIndexKeys()
[
    {
        "_id" : 1 }, { "name" : 1 }, { "name" : -1 }, { "name" : 1, "age" : 1 }, { "age" : 1 } ]

例3:totalIndexSize()的用法

> db.users.totalIndexSize() 81920

例4:getIndexSpecs()的用法

> db.users.getIndexSpecs()
[
    {
        "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test1.users" }, { "v" : 1, "key" : { "name" : 1 }, "name" : "name_1", "ns" : "test1.users" }, { "v" : 1, "key" : { "name" : -1 }, "name" : "name_-1", "ns" : "test1.users" }, { "v" : 1, "key" : { "name" : 1, "age" : 1 }, "name" : "name_1_age_1", "ns" : "test1.users" }, { "v" : 1, "key" : { "age" : 1 }, "name" : "age_1", "ns" : "test1.users", "background" : 1 } ]

刪除索引:

不再需要的索引,我們可以將其刪除,mongodb提供兩種刪除索引的方法:
dropIndex()方法用於刪除指定的索引
dropIndexes()方法用於刪除全部的索引
例1:dropIndex()的用法

> db.users.dropIndex("name_1") { "nIndexesWas" : 5, "ok" : 1 } > db.users.dropIndex("name_1_age_1") { "nIndexesWas" : 4, "ok" : 1 } > db.users.getIndexSpecs() [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test1.users" }, { "v" : 1, "key" : { "name" : -1 }, "name" : "name_-1", "ns" : "test1.users" }, { "v" : 1, "key" : { "age" : 1 }, "name" : "age_1", "ns" : "test1.users", "background" : 1 } ]

我們可以看到,name字段的索引和name與age字段的組合索引皆被刪除

例2:dropIndexes()的用法

> db.users.dropIndexes() { "nIndexesWas" : 3, "msg" : "non-_id indexes dropped for collection", "ok" : 1 } > db.users.getIndexSpecs() [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test1.users" } ]

在使用了dropIndexes()方法后,我們之前建的所有索引都被刪除掉了

索引重建:

我們之前把users的索引全部刪除了,現在在name字段上建立一個正序索引,然后在name字段上重建倒序索引,可以看到重建索引是把之前name字段的索引刪掉再新建一個索引的,重建之前name字段還是只有一個索引.

> db.users.createIndex({name:1})
{
    "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 } > db.users.getIndexSpecs() [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test1.users" }, { "v" : 1, "key" : { "name" : 1 }, "name" : "name_1", "ns" : "test1.users" } ] > db.users.reIndex({name:-1}) { "nIndexesWas" : 2, "nIndexes" : 2, "indexes" : [ { "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test1.users" }, { "key" : { "name" : 1 }, "name" : "name_1", "ns" : "test1.users" } ], "ok" : 1 } > db.users.getIndexSpecs() [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test1.users" }, { "v" : 1, "key" : { "name" : 1 }, "name" : "name_1", "ns" : "test1.users" } ]

linux環境給mongodb創建索引

1.首先我們進入到linux mongodb安裝目錄的bin下面執行以下命令:

./mongo --host ip:端口

2.選擇用戶

use admin

3.選擇庫

use 庫名

4.執行創建索引命令,等待創建索引。

db.表名.createIndex({"title":1})

5.創建完成后執行exit退出

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM