索引
优点与缺点
- 优点:用于提高数据读取速度,提高查询效率
- 缺点:
- 会降低表更新速度
- 占用磁盘空间
基本命令
- 唯一索引,实现唯一约束,1(升序),-1(降序)
- db.集合名.ensureIndex({“name”:1},{“unique”:true})
- 联合索引,对多个属性建立一个索引,按照find()出现的顺序
- db.集合名.ensureIndex({name:1,age:1})
- 查看索引
- db.集合名.getIndexes()
- 删除索引
- db.集合名.dropIndex(‘索引名称’)
- 性能分析
- explain(‘executionStats’)
demo:db.staff.find({age:{$gt:30}}).explain(“executionStats”)
- explain(‘executionStats’)
备份
- 语法:
- mongodump -h dbhost -d dbname -o dbdirectory
- -h:服务器地址,也可以指定端口号
- -d:需要备份的数据库名称
- -o:备份的数据存放位置,此目录中存放着备份出来的数据
恢复
- 语法:
- mongorestore -h dbhost -d dbname –dir dbdirectory
- -h:服务器地址
- -d:需要恢复的数据库实例
- –dir:备份数据所在位置
与python交互
- 使用模块pymongo
模块提供对象
- MongoClient对象:用于与MongoDB服务器建立连接
- 使用init方法创建链接对象:
- client = MongoClient(‘主机ip’, 端口)
- 使用init方法创建链接对象:
- DataBase对象:对应着MongoDB中的数据库
- 通过client对象获得数据库对象
- db = client.数据库名
- 通过client对象获得数据库对象
Collection对象:对应着MongoDB中的集合
- 获得集合对象
- col = db.集合名
- 主要方法
- insert_one:加入一条文档对象
- insert_many:加入多条文档对象
- find_one:查找一条文档对象
- find:查找多条文档对象
- update_one:更新一条文档对象
- update_many:更新多条文档对象
- delete_one:删除一条文档对象
- delete_many:删除多条文档对象
- 获得集合对象
Cursor对象:查询方法find()返回的对象,用于进行多行数据的遍历
- 一般结合for循环遍历Cursor对象
- 交互代码见github
- MongoClient对象:用于与MongoDB服务器建立连接