注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

MongoDB:创建索引  

2012-11-19 21:59:11|  分类: MongoDB |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

      MongDB 支持丰富的查询,同时支持灵活的索引创建操作,例如支持升序/降序索引,
组合索引,Multikey Index 等等,今天仅演示索引的相关操作,如创建,查看等。

      MongDB 创建索引的命令为 ensureIndex,这个命令有两个参数,如下所示:
   
keys:   包括索引的列以及索引的顺序(升序/降序);
optins: 创建索引的选项,可选参数,例如 background,unique,name 等。

        以下是具体的演示过程:
   

--1 创建测试表

 [mongo@redhatB ~]$ mongo
MongoDB shell version: 2.2.1
connecting to: test

> for (var i=1; i<=100001; i++ ) db.test_4.save({skyid:i,name:'a'});

> db.test_4.find().limit (5);
{ "_id" : ObjectId("50aa31344e8ce0d3738f8afa"), "skyid" : 1, "name" : "a" }
{ "_id" : ObjectId("50aa31344e8ce0d3738f8afb"), "skyid" : 2, "name" : "a" }
{ "_id" : ObjectId("50aa31344e8ce0d3738f8afc"), "skyid" : 3, "name" : "a" }
{ "_id" : ObjectId("50aa31344e8ce0d3738f8afd"), "skyid" : 4, "name" : "a" }
{ "_id" : ObjectId("50aa31344e8ce0d3738f8afe"), "skyid" : 5, "name" : "a" }

     备注:创建测试表并插入 10000 条数据。并插入 100001 条数据。
 

--2 查看现有索引

 > db.test_4.getIndexes();
[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "ns" : "skytf.test_4",
                "name" : "_id_"
        }
]
   
  备注: 返回了一条索引项,包括四个元素,解释如下:
        v:       索引的版本号,这由 mongod 的版本决定,2.0 版本之前的 mongod 这个值为 0,
                 2.0 或之后的 mongod 的版本这个值为 1。
        key:  索引项名称以及索引的排序规则(升序/降序)
        ns:     索引所在的集合的名称
        name: 索引名称
       
--3 创建索引

 > db.test_4.ensureIndex({skyid:1},{name:"idx_test_4_skyid"});
     备注:上面指定了 “name” 可选参数,即指定索引名称。


--4 再次查看索引

 > db.test_4.getIndexes();
[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "ns" : "skytf.test_4",
                "name" : "_id_"
        },
        {
                "v" : 1,
                "key" : {
                        "skyid" : 1
                },
                "ns" : "skytf.test_4",
                "name" : "idx_test_4_skyid"
        }
]

     备注:返回的结果为两条索引项。


--5 查询数据库里所有索引

 > db.system.indexes.find({"ns":"skytf.test_4"});
{ "v" : 1, "key" : { "_id" : 1 }, "ns" : "skytf.test_4", "name" : "_id_" }
{ "v" : 1, "key" : { "skyid" : 1 }, "ns" : "skytf.test_4", "name" : "idx_test_4_skyid" }
         备注: system.indexes 存储了当前数据库所有的索引信息。
   
         由于创建索引过程会阻塞其它数据库操作,建议以后台方式创建索引,即增加 “background”
   可选参数。
  

--6 删除索引  

 > db.test_4.dropIndex('idx_test_4_skyid');
{ "nIndexesWas" : 2, "ok" : 1 }  
     备注:删除表 test_4 的 idx_test_4_skyid 索引。


--7 以后台方式创建索引

 > db.test_4.ensureIndex({skyid:1},{name:"idx_test_4_skyid",background:true}); 


--8 再次查看索引

 > db.test_4.getIndexes();db.test_4.getIndexes();
[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "ns" : "skytf.test_4",
                "name" : "_id_"
        },
        {
                "v" : 1,
                "key" : {
                        "skyid" : 1
                },
                "ns" : "skytf.test_4",
                "name" : "idx_test_4_skyid",
                "background" : true
        }
]
   

--10  总结
 
         索引维护操作还有很多,以及索引创建过程中对其它操作的影响还没深入了解,今天先学习到这。

  
--11  参考
http://docs.mongodb.org/manual/reference/method/db.collection.getIndexes/#db.collection.getIndexes
http://docs.mongodb.org/manual/reference/method/db.collection.ensureIndex/#db.collection.ensureIndex  
http://docs.mongodb.org/manual/administration/indexes/
     

  评论这张
 
阅读(19978)| 评论(3)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016