mongodb使用的一些技巧与性能优化

字段重命名

将coll1表中oprater1字段名换成oprater

db.getCollection('coll1').update({},{"$rename":{'oprater1':'oprater'}},false,true)

根据mongodb中内嵌数组数量限制进行查询

  • 查询a_col表中name键数组数量为1的数据

      db.getCollection('a_col').find({'name': {‘$size':1}})
    
  • 查询a_col表中name键数组数量大于1的数据

      db.getCollection(‘col_a').find({'name.1': {‘$exists':1}})
    

索引(所有命令注意大小写)

  • 创建索引

  •   db.coll.ensureIndex({"firstname": 1})
    
  • 查看已创建的索引

      db.coll.getIndexes()
    
  • 删除索引

  •   db.coll.dropIndex({"firstname": 1})
    
  • 创建复合索引

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

    db.coll.ensureIndex({"firstname": 1,"lastname":-1}) 
  • 创建唯一索引

      db.coll.ensureIndex({"firstname": 1, "lastname": 1}, {"unique": true});
    

    创建成功后重复插入会报错”E11000 duplicate key error index“

  • 创建唯一索引并删除重复记录(mongodb版本3.0以上不适用)

      db.coll.ensureIndex({"productid":1}, {"unique":true, "dropDups":true})
    
  • 后台创建索引

后台创建索引,创建时不会阻塞其他操作,效率会比阻塞方式创建低一点

    db.coll.ensureIndex({"firstname":1},{"background":true})

性能优化

性能分析函数(explain)

db.coll.find({"name":name}).explain()

显示执行状态

db.coll.find({"name":name}).explain("executionStats")

mongodb使用主从配置提高性能

http://www.cnblogs.com/myblog1314/p/3914810.html
http://www.cnblogs.com/yujon/p/6128761.html

mongodb使用副本集提高性能,读写分离

http://www.cnblogs.com/yujon/p/6128824.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容