mongoDB介绍以及常用命令

1、什么是MongoDB

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,类似json格式,因此可以存储比较复杂的数据类型。

2、关系型数据库与非关系型数据库的区别

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是 SQL”,它指的是非关系型的数据库,是以 key-value 形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循 SQL 标准 、表结构。它没有sql语句。
代表作:Redis、memcached、mongodb

什么时候建议使用 NoSql ?

1、对数据库高并发读写的需求
2、对海量数据的高效率存储和访问的需求
3、对数据库的高扩展性和高可用性的需求

NoSql 和传统数据库简单对比。

非结构型数据库。没有行、列的概念。用 JSON 来存储数据。 集合就相当于“表 ”,文档就相当于“行”。

3、数据库常用命令

1、Help 查看命令提示 db.help()
2、创建/切换数据库 use user
3、查询数据库 show dbs
4、显示当前 DB 状态 db.stats()
5、查看当前 DB 版本 db.version()
6、查看当前 DB 的链接机器地址 db.getMongo()
7、删除数据库 db.dropDatabase()

4、Collection 聚集集合操作

1创建一个聚集集合

db.createCollection(”user",{capped:false,size:100000000,max:5})
添加10M固定集合也就是表用记存储日志是最好的参数
参数:
name:集合的名字
capped:是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,如果开启不能删除数据
size:限制集合使用空间的大小,默认为没有限制,size的优先级比max要高
max:集合中最大条数限制,默认为没有限制
autoIndexId:是否使用_id作为索引,默认为使用(true或false)

2、得到指定名称的聚集集合

db.getCollection("user")

3、得到当前 DB 的所有聚集集合

show tables

4、显示当前 db 所有聚集的状态

db.printCollectionStats()

5、document 文档操作

1、插入文档

(可以直接创建集合相当于db.createCollection) db.user.insert({name:”zhangsan",age:30})

2、获得当前 db 的所有文档

db.user.find()

3、更新文档

db.user.update({name:”zhangsan"},{$set:{name:”lisi",gender:'男'}});

4、删除文档

db.user.remove({name:”zhagnsan"})

5、条件查询

db.user.find({name:”zhagnsan”},{age:1,name:1}) 第一个参数:条件查询。
第二个参数:显示哪些字段,
1:显示,-1:不显示

1、条件操作符

db.user.find({age:{$gt:5}}) 大于5数据就出来了
db.user.find({age:{$lt:5}});小于5的数据出来
db.user.find({age:{$lte:5}});小于等于5的数据
db.user.find({age:{$gte:5}});大于等于5的数据
db.user.find({age:{$ne:5}});不等于5的数据
db.user.find({_id:{$gt:5}}).limit(8); 大于5且只显示8条

2、 Limit 与 Skip 方法

db.user.find().limit(8);只显示8条数据
db.user.find().skip(8);跳过前面的8条数据
db.user.find().skip(1).limit(8);从第一条开始,每页显示8条数据,如果skip(9)且limt(8)则从第9条数据显示,每页显示8条数据,可以做分页。

3、排序

db.user.find().sort({age:1});升序
db.user.find().sort({age:-1});降序

4、索引

索引是做优化,让数据读取速度更快。一般条件查询频繁的字段设置索引。比如:_id,还有咱们刚才的age。
创建索引
db.user.createIndex({age:1});在age上建立索引1(升序),-1(降序),索引升序、降序和你的sort排序相关,如果升序和降序都要支持索引,那么就分别创建{age:1},{age:-1}
db.user.createIndex({age:1},{background:true}); 当系统已有大量数据时,创建索引非常耗时,需在后台执行,只需指定“backgroud:true”即可。
查看详细索引信息 db.user.getIndexes();
查看简单索引信息 db.user.getIndexKeys();
删除所有索引 db.user.dropIndexes()
删除指定索引 db.user.dropIndexes({age:1})

数据库的导入/导出

导出:

使用mongodb自带导出工具mongoexport,在bin目录下面
mongoexport -d dbname -c collectionname -o file --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
-o :输出的文件名
--type : 输出的格式,默认为json
-f :输出的字段,如果-type为csv,则需要加上-f "字段名"

导入:

使用mongodb自带导入工具mongoimport ,在bin目录下面
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field –jsonArray
参数说明:
-d :数据库名
-c :collection名
--file :要导入的文件
--type : 导入的格式,默认为json
-f :输出的字段,如果-type为csv,则需要加上-f "字段名"
--jsonArray:支持数组,如果出现Failed: error unmarshaling bytes on document #0: JSON decoder out of sync - data changing underfoot?使用这个参数试试

可视化工具Robo3T

下载地址: https://robomongo.org/download
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值