MongoDB优点:
1.MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
2.如果负载的增加,它可以分布在计算机网络中的其他节点上这就是所 谓的分片。
3. MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++, PHP,C#等多种语言。
4.你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的 扩展性。
MongoDB 解决Mysql 的“三高”问题:
1.对数据库高并发写入需求
2. 对海量数据高效率存储访问需求
3. 对数据库高扩展和高可用的需求
MongoDB 实际应用:
1. 社交场景,比如朋友圈,附近的人的地点的存储
2. 游戏场景,比如用户当前装备,得分等
3. 物流场景,比如快递的位置,状态,途径
4. 视频场景,比如直播中的点赞数和互动留言等
MongoDB的缺点:
1. MongoDB 不支持事务
2. MongoDB 不能进行多表联查
// 查看磁盘上的所有库
show dbs;
//创建、使用库
use 小汉堡;
//查看当前库对象
db;
//删除库
db.dropDatabase();
//当前库中创建集合、表
db.createCollection('student');
//查看当前库中的集合、表
show tables; 或者 show collections;
//删除集合
db.student.drop();
//插入数据
db.student.insert({stuname:'张三',age:16});
db.student.insert(
{ shuai:true,
money:true,
gf:[{stuname:'小红'},{stuname:'小黄'},{stuname:'小孩' }]
});
//删除数据
//全部删除
db.student.remove({});
//带条件的删除
//delete from student where stuname='张三';
db.student.remove({stuname:'张三' })
//注意:符合条件的全部删掉 有几个删几个
db.student.remove({age:16});
//删除主键编号较小一条数据
db.student.remove({age:16},{justOne:true});
//修改
更新数据 语法: db.集合名.update({查询条件},{$set:{更新内容}}, { upsert: , multi: , } )
upsert: 默认为false ,如果查询不到数据,则把跟新输入插入
multi:默认为false,默认只改一条,true,更改多条
// 如果有多个结果符合条件,只改遇到的第一个(_id最小的那个)
db.student.update(
{stuname:'赵六'},
{$set:{age:18}}
);
//匹配到多个,并且修改多个
db.student.update(
{stuname:'赵六'},
{$set:{age:18}},
{multi:true}
);
// {upsert:true}把没匹配到的数据 作为新增的值添加到mongo中
db.student.update(
{stuname:'小张'},
{$set:{age:11}},
{upsert:true}
);
//在某一列上在原有的值基础之上进行递增1效果可以用$inc运算符来实现 数值改变(既能加又能减)
db.student.update(
{stuname:'小张'},{$inc:{age:100}}
)
//查询
//全查
db.student.find();
//根据条件查询
db.student.find({stuname:'赵六' });
//age小于20岁的人
db.student.find({age:{$lt:20}});
//age大于等于18并且age小于等于60
db.student.find({age:{$gte:18,$lte:60}});
//age大于等于18或者age小于等于120
db.student.find({$or:[{age:{$gte:18}},{age:{$lte:60}},]});
//模糊查询
db.student.find({stuname:/六/ });
db.student.find({stuname:/^六/ });
db.student.find({stuname:/六$/ });
//分页 (页码-1)*步长
db.student.find().limit(1).skip((3-1)*1);
//统计
db.student.find({stuname:'赵六' }).count();
//排序 1:升序 -1:降序
db.student.find().sort({age:-1});
//索引
db.student.getIndexes();
//创建索引
//建一个升序的索引
db.student.createIndex({age:1});
//降序
db.student.createIndex({age:-1});
//删除索引
db.student.dropIndex({age:1});