MongoDB基础学习总结

MongoDB的介绍

1.什么是MongoDB?
    MongoDB是基于分布式文件存储的数据库,有C++编写旨在为WEB应用提供可扩展的高性能数据存储解决方案,是一个介于关系型数据库和非关系型数据库(nosql)之间的产品,是非关系数据库中功能最丰富,最像关系数据库的
2.MongoDB的优缺点:
    优点:
    ·MongoDB提供了一个面向文档存储,操作简单容易
    ·如果负载增加,它可以分布在计算机网络中的其他节点上(分片)
    ·MongoDB支持多种语言
    缺点:
    ·MongoDB不支持事务
    ·MongoDB不能进行多表联查
3.为什么学习MongoDB?
    MongoDB解决Mysql的“三高”问题:
        ·对数据库高并发写入
        ·对海量数据高效率存储访问需求
        ·对数据库高扩展和高可用需求
4.实际应用:
    1.社交场景:朋友圈,附近的人的地点的存储
    2.游戏场景:比如用户当前装备,得分
    3.物流场景:快递的位置,状态,途径
    4.视频场景:直播中的点赞数和互动留言

MongoDB的名词解释

MongoDB的数据类型

MongoDB的基本操作:

数据库基础命令:
//查看所有数据库
可以直接访问这些有特殊作用的数据库
admin:’root‘数据库(权限的角度),要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限,一些特定的服务器端命令也只能从这个数据库运行
local:这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config:当mongoDB用于分片设置,config数据库在内部使用,用于保存分片的相关信息

show dbs;

//创建并使用数据库(在MongoDB,集合只有在内容插入后才会真正创建)
// 语法:use  数据库名;
use myschool;

查看当前数据库对象
db;

//删除数据库
db.dropDatabase();
数据集合(表)操作
//集合(相当于mysql的表)
//在当前库中创建集合(表)
// 语法:db.createCollection('集合名')
db.createCollection('student')

//查看当前库的集合(表),以下语句都可以
show collections;
show tables;

//删除集合
//语法: db.集合名.drop();
db.student.drop();
数据文档(文档相当于mysql中的一条数据记录)基础操作:(增删改查)
//1.插入数据
// document:  类似 json 格式的键值对
// 语法:db.collection名.insert(document)
db.student.insert({sname:'李四',age:15})

//删除数据
//全部删除
// 语法:db.集合名.remove({});
db。student.remove({});

//带条件删除 : 会把符合条件的全部是删掉
db.student.remove({sname:'张三'});

//带条件删除:{justOne:true}  只删除 符合条件 键编号较小 的一条数据
db.student.remove({age:15},{justOne:true});

修改数据 :{$set:{新值}
//如果1有对各结果符合条件是,只改_id最小的
db.student.update({sname:'张三'},{$set:{age:199}});

//{multi:true}:把符合条件的都修改
db.student.update({sname:'张三'},{$set:{age:88},{multi:true}});

//{upsert:true} ://没匹配到数据就作为新增数据添加到集合中
db.student.update({sname:'大头儿子'},{$set:{age:55}},{upsert:true})

//{$inc:{}}:数值改变:可加可减(点赞功能实现)
//年龄加1,  
db.student.update{
		{sname:'大头儿子'},
		{$inc:{age:1}}
}
// {$inc:{age:-1}}:年龄减1

//查询
//全查
db.student.find();

//根据条件查询:符合条件的全部查到
db.student.find({sname:'大头儿子'});

//数值判断条件查询
//小于88岁的人
db.student.find({age:{$lt:88}})

//40-90之间的,相当于and
db.studnet.find({age:{$lt:90,$gt:40}})

//or 查询大于18,或者小于90的
db.student.find({
                $or:[
                    {age:{$gte:18}},
                    {age:{$lte:90}}
                ]
                })

//模糊查询
//查询sname中包含 儿的 名字
db.student.find({sname:/儿/});
//查询以什么开头:以大开头
db.student.find({sname:/^大/});
//查询以什么结尾
db.student.find({sname:/子$/});


//分页:
//语法:db.集合名.find().limit(n);
//查询前两条数据
db.student.find().limit(2);

//跳过多少条查询n条数据
db.集合名.find().limit(n).skip((页码-1)*步长);
//跳过4条数据,查询2条
db.student.find().limit(2).skip(4);

MongoDB的数据比较符

数据的分页,排序,索引:
//统计个数
db.student.find({sname:'大头儿子'}).count()

//排序
// 升序:1   //降序:-1
//年龄升序
db.studnet.find().sort({age:1})
//年龄降序
db.studnet.find().sort({age:-1});

//查看索引,//默认是主键
db.studnet.getIndexes()

//创建索引:
db.student.createInex({age:1})
//删除索引
db.student.dropIndex({age:1});

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cph_507

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值