一、简介
MongoDB是一个NoSQL型的数据库,基于分布式文档型储存数据库,由C++语言编写,它的特点是开源、高性能、高可用、高扩展、易部署。支持 Golang、RUBY、PYTHON、JAVA、C++、PHP等多种开发语言。
二、应用场景
MongoDB适用于高并发读写、数据量大、高可扩展性和高可用性且对事务要求不高的场景,常用的应用场景有以下:
1. 社交应用:可以使用MongoDB来存储用户信息和朋友圈动态,实现附近的人等功能。
2. 游戏:使用MongoDB来存储用户基础信息,以及游戏中的积分、等级以及装备等用户关联信息。
3. 物流:使用MongoDB存储订单信息,以及物流轨迹信息。
4. 物联网:使用MongoDB存储各设备信息,以及个设备的产生的日志信息,以便于对设备进行分析、维护和预警。
5. 视频直播:使用MongoDB来吃存储用户信息,以及用户操作日志、点赞、收藏和评价。
三、基础操作
1、创建集合
集合的创建分为隐式创建和显式创建。
显式创建:db.createCollection(name)。
隐式创建:当向一个集合插入一个文档时,如果集合不存在则会自动创建集合。
2、插入操作:
insert插入:插入单个数据。
  
       
   insertMany插入:插入多条数据。

3、查询操作:
查询操作使用find()或findOne()进行查询,其中findOne()只查询出一条数据。
find查询
     
               
比较查询
| 操作 | 操作符 | 查询格式 | 
| 小于 | $lt | {age:{$lt:18}} // where age<18 | 
| 小于等于 | $lte | {age:{$lte:18}} // where age<=18 | 
| 大于 | $gt | {age:{$gt:18}} // where age>18 | 
| 大于等于 | $gte | {age:{$gte:18}} // where age>=18 | 
| 不等于 | $ne | {age:{$ne:18}} // where age<>18 | 

逻辑查询
and查询

或者缺省$and
or查询

混合查询

in 和nin 查询

为空查询

分页查询

分组查询
使用聚合方法aggregate()。


其他聚合操作
| 操作 | 描述 | 示例 | 
| $avg | 计算平均值。 | db.user.aggregate([{$group:{_id:"$sex",avg_age:{$avg:"$age"}}}]) | 
| $max | 求最大值。 | db.user.aggregate([{$group:{_id:"$sex",min_age:{$max:"$age"}}}]) | 
| $push | 将值加入一个数组中,不判断重复。 | db.user.aggregate([{$group:{_id:"$sex",name:{$push:"$name"}}}]) | 
| $addToSet | 将值加入一个数组中,会判断是重复,若重复则不加入。 | db.user.aggregate([{$group:{_id:"$sex",name:{$addToSet:"$name"}}}]) | 
| $first | 获取第一个文档数据 | db.user.aggregate([{$group:{_id:"$sex",first_name:{$first:"$name"}}}]) | 
| $last | 获取最后一个文档数据 | db.user.aggregate([{$group:{_id:"$sex",last_name:{$last:"$name"}}}]) | 
4、更新操作
db.user.update({查询条件},{更新操作},不存在时是否插入,是否多条,异常级别)。
5、删除操作
删除集合(此操作慎用)
db.user.drop();
删除文档
db.user.remove({查询条件})
四、索引
1. 创建索引
db.user.createIndex({age:1}) // 创建index_age 按升序排序
2. 查看索引
db.user.getIndexes()
3. 查看索引大小
db.user.totalIndexSize()
4. 删除索引
db.user.dropIndex(索引名);
db.user.dropIndexes();//删除集合所有索引
  
总结:
本文主要介绍了MongoDB的常用的基础操作,操作方式主要使用的是json类型的条件语句,对json编写的要求较高,其操作和MySQL的操作基本相同,除了MongoDB没有join查询以外其他查询都支持,后续会给大家分享MongoDB的安装和主从复制等内容。










