欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

mongodb目录与优化

更新时间: 2014-01-05 02:04:41 责任编辑: Author_N1

 

mongodb索引与优化
一、基础索引
1、创建索引
db.test.ensureIndex({"username":1})
2、查询索引
db.test.getIndexes()
3、删除索引
db.test.dropIndex({"username":1})

-- 数字1表示username键的索引按升序存储,-1表示age键的索引按照降序方式存储。

4、复合索引
   db.test.ensureIndex({"username":1, "age":-1})
   该索引被创建后,基于username和age的查询将会用到该索引,或者是基于username的查询也会用到该索引,
   但是只是基于age的查询将不会用到该复合索引。因此可以说,如果想用到复合索引,
   必须在查询条件中包含复合索引中的前N个索引列。然而如果查询条件中的键值顺序和复合索引中的创建顺序不一致的话,
   MongoDB可以智能的帮助我们调整该顺序
5、创建指定名称的索引
   db.test.ensureIndex({"username":1},{"name":"testindex"})   

二、唯一索引
  db.test.ensureIndex({"userid":1},{"unique":true})
  db.test.ensureIndex({"userid":1,"age":1},{"unique":true})  
  创建唯一索引,并消除重复数据。
  db.test.ensureIndex({"userid":1},{"unique":true,"dropDups":true})
 
三、使用explain优化索引
db.test.find().explain()
    {
        "cursor" : "BasicCursor",
        "nscanned" : 1,
        "nscannedObjects" : 1,
        "n" : 1,
        "millis" : 0,
        "nYields" : 0,
        "nChunkSkips" : 0,
        "isMultiKey" : false,
        "indexOnly" : false,
        "indexBounds" : {

        }   
    }
    explain会返回查询使用的索引情况,耗时和扫描文档数的统计信息。
    "cursor":"BasicCursor"表示没有使用索引。
    "nscanned":1 表示查询了多少个文档。
    "n":1 表示返回的文档数量。
    "millis":0 表示整个查询的耗时。
     
四、 索引管理
system.indexes集合中包含了每个索引的详细信息,因此可以通过下面的命令查询已经存在的索引,如:
db.system.indexes.find()
如果在为已有数据的文档创建索引时,可以执行下面的命令,以使MongoDB在后台创建索引,
这样的创建时就不会阻塞其他操作。但是相比而言,以阻塞方式创建索引,会使整个创建过程效率更高,
但是在创建时MongoDB将无法接收其他的操作。
db.test.ensureIndex({"username":1},{"background":true})
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:04:41
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/5343/
本文WWW.DOC100.NET DOC100.NET版权所有。