wefe2 发表于 2015-1-9 08:17:37

【MongoDB学习笔记22】MongoDB的索引管理

使用ensureIndex函数创建集合的索引。
对集合而言,每个索引只需要创建一次,重复创建没有任何作用;

1
2
3
> show collections   
system.indexes   
users




所有的数据库的索引元数据都存放在system.indexs的集合中;

使用getIndexes函数查看给定的集合上的索引信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
> db.users.getIndexes()   
[   
    {   
      "v" : 1,   
      "key" : {   
            "_id" : 1   
      },   
      "name" : "_id_",   
      "ns" : "blog.users"   
    },   
    {   
      "v" : 1,   
      "key" : {   
            "username" : 1   
      },   
      "name" : "username_1",   
      "ns" : "blog.users"   
    },   
    {   
      "v" : 1,   
      "key" : {   
            "age" : 1,   
            "username" : 1   
      },   
      "name" : "age_1_username_1",   
      "ns" : "blog.users"   
    }   
]   
>




可以适应dropIndex函数删除指定的索引:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
> db.users.dropIndex({"username":1})   
{ "nIndexesWas" : 3, "ok" : 1 }   
> db.users.getIndexes()   
[   
    {   
      "v" : 1,   
      "key" : {   
            "_id" : 1   
      },   
      "name" : "_id_",   
      "ns" : "blog.users"   
    },   
    {   
      "v" : 1,   
      "key" : {   
            "age" : 1,   
            "username" : 1   
      },   
      "name" : "age_1_username_1",   
      "ns" : "blog.users"   
    }   
]   
>




上述的例子中可以看到索引的标识默认格式为keyname1_dir1_keyname2_dir….keynameN_DirN;
也可以指定标识名:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
> db.users.ensureIndex({"username":1},{"name":"firstname"})   
{   
    "createdCollectionAutomatically" : false,   
    "numIndexesBefore" : 2,   
    "numIndexesAfter" : 3,   
    "ok" : 1   
}   
> db.users.getIndexes()   
[   
    {   
      "v" : 1,   
      "key" : {   
            "_id" : 1   
      },   
      "name" : "_id_",   
      "ns" : "blog.users"   
    },   
    {   
      "v" : 1,   
      "key" : {   
            "age" : 1,   
            "username" : 1   
      },   
      "name" : "age_1_username_1",   
      "ns" : "blog.users"   
    },   
    {   
      "v" : 1,   
      "key" : {   
            "username" : 1   
      },   
      "name" : "firstname",   
      "ns" : "blog.users"   
    }   
]   
>





修改索引的步骤:删除索引—>创建索引;
删除索引可以直接指定索引标识,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
> db.users.dropIndex("firstname")   
{ "nIndexesWas" : 3, "ok" : 1 }   
> db.users.getIndexes()   
[   
    {   
      "v" : 1,   
      "key" : {   
            "_id" : 1   
      },   
      "name" : "_id_",   
      "ns" : "blog.users"   
    },   
    {   
      "v" : 1,   
      "key" : {   
            "age" : 1,   
            "username" : 1   
      },   
      "name" : "age_1_username_1",   
      "ns" : "blog.users"   
    }   
]   
>






页: [1]
查看完整版本: 【MongoDB学习笔记22】MongoDB的索引管理